android貝塞爾曲線多點,Canvas 貝塞爾曲線的多點波動

JavaScript

語言:

JaveScriptBabelCoffeeScript

確定

function Ball(x, y, radius) {

this.x = x;

this.y = y;

this.radius = radius;

this.vx = 20;

this.vy = 10;

}

Ball.prototype.draw = function(ctx) {

ctx.save();

ctx.translate(this.x, this.y);

ctx.fillStyle = 'rgba(255, 255, 255, 0.2)';

ctx.beginPath();

ctx.arc(0, 0, this.radius, 0, Math.PI * 2, true);

ctx.fill();

ctx.restore();

}

function Curve(points) {

this.points = points;

this.ballRadius = 5;

this.speed = 0.12;

this.vy = 2 + Math.random() * 2;

}

Curve.prototype.draw = function() {

var length = this.points.length - 2,

ctrlPoint = {},

i;

ctx.save();

ctx.beginPath();

ctx.moveTo(this.points[0].x, this.points[0].y);

for (i = 1; i < length; i++) {

ctrlPoint.x = (this.points[i].x + this.points[i + 1].x) / 2;

ctrlPoint.y = (this.points[i].y + this.points[i + 1].y) / 2;

ctx.quadraticCurveTo(this.points[i].x, this.points[i].y, ctrlPoint.x, ctrlPoint.y);

}

ctx.quadraticCurveTo(this.points[i].x, this.points[i].y, this.points[i + 1].x, this.points[i + 1].y);

ctx.lineWidth = 2;

ctx.lineCap = 'round';

ctx.strokeStyle = '#fff';

ctx.stroke();

ctx.restore();

}

var canvas = document.querySelector('canvas'),

ctx = canvas.getContext('2d'),

W = canvas.width = window.innerWidth,

H = canvas.height = window.innerHeight,

limit = W / 2.2,

horizontalBall = new Ball(100, H / 2, 100),

curves = [];

for (var y = H / 2 - 150; y <= H / 2 + 150; y += 50) {

makeCurve(y)

}

function makeCurve(y) {

var curve, points = [];

for (var x = W / 2 - limit; x <= W / 2 + limit; x += 100) {

points.push({

x: x,

y: y,

oldY: y,

targetY: y - 300 + Math.random() * 600,

speed: 0.1,

vy: 5 + Math.random() * 5,

gravity: 0.85,

vyy: 3 + Math.random() * 4

});

}

curve = new Curve(points);

curves.push(curve)

}

function moveBalls(ball) {

if (ball == horizontalBall) {

if (ball.x + ball.radius > W) {

ball.x = W - ball.radius - 50;

ball.vx *= -1;

} else if (ball.x - ball.radius < 0) {

ball.x = 50 + ball.radius;

ball.vx *= -1;

}

ball.x += ball.vx;

}

}

(function drawFrame() {

requestAnimationFrame(drawFrame, canvas);

ctx.fillStyle = '#17293a';

ctx.fillRect(0, 0, W, H);

curves.forEach(function(curve) {

curve.points.forEach(function(point) {

var dx, dy, dist,

dx2, dy2, dist2,

n = curve.points.indexOf(point);

dx = (horizontalBall.x - point.x);

dy = (horizontalBall.y - point.y);

dist = Math.sqrt(dx * dx + dy * dy);

if (dist < 200) {

if (n % 2 === 0) {

point.y -= point.vyy;

} else if (n % 2 !== 0) {

point.y += point.vyy;

}

} else {

point.vy += (point.oldY - point.y) * point.speed;

point.vy *= point.gravity;

point.y += point.vy;

}

});

curve.draw(ctx);

});

moveBalls(horizontalBall);

}());

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531575.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html5做一個展示頁面,基于HTML5的WebGL實現json和echarts圖表展現在同一個界面

突然有個想法&#xff0c;如果能把一些用到不同的知識點放到同一個界面上&#xff0c;并且放到一個盒子里&#xff0c;這樣我如果要看什么東西就可以很直接顯示出來&#xff0c;而且這個盒子一定要能打開。我用HT實現了我的想法&#xff0c;代碼一百多行&#xff0c;這么少的代…

android 空白占位符,android textview空格占位符以及一些其他占位符匯總

普通的英文半角空格 no-break space (普通的英文半角空格但不換行) 中文全角空格 (一個中文寬度) ? en空格 (半個中文寬度) ? em空格 (一個中文寬度) 四分之一em空格 (四分之一中文寬度)相比平時的空格( )&#xff0c;nbsp擁有不間斷(non-breaking)特性。即連續的nbs…

html圖片平移,CSS3 按鈕懸停時背景圖片平移入場

JavaScript語言&#xff1a;JaveScriptBabelCoffeeScript確定$(".thumb-next").on(mouseleave, function() {$(".layout-p").text("Hover above, please.");});$(".thumb-next").on(mouseenter, function() {$(".layout-p")…

Netbeans 中創建數據連接池和數據源步驟(及解決無法ping通問題)

1.啟動glassfish服務器&#xff0c; 在瀏覽器的地址欄中輸入 http://localhost:4848 2.首先建立JDBC Connection Pools&#xff1b; 3.new 一個Connectio Pools 4.對General Settings屬性填寫&#xff1b; 5.填寫Datasource Classname&#xff1a;com.mysql.jdbc.jdbc2.optiona…

商品詳情頁html,天天生鮮商品詳情頁HTML+css

body{font-family: Microsoft YaHei;color:#666;font-size:12px;}/*頂部條狀態*/.header_con{height:29px;background-color: #f7f7f7;border-bottom:1px solid #ddd;}.header{width:1200px;height:29px;margin:0 auto;1}.welcome{font:12px/29px Microsoft YaHei UI;float: le…

Netbeans不能正常啟動glassfish或者部署失敗不能運行的問題

錯誤信息&#xff1a;D:\臨時文件\netbeans\WebTest\build\web中部署GlassFish Server 4, deploy, Connection refused: connect, falseD:\臨時文件\netbeans\WebTest\nbproject\build-impl.xml:1048: 尚未部署該模塊。有關詳細信息, 請查看服務器日志。構建失敗 (總時間: 7 秒…

js實現圖片加載特效(從左到右,百葉窗,從中間到兩邊)

/*  網上百度的&#xff0c;感覺”從中間到兩邊“的效果寫的不是很好&#xff0c;改了一下&#xff0c;感覺可以了&#xff01;*/<html><head><title></title><meta http-equiv"Content-Type" content"text/html; charsetUTF-8&qu…

給html動態添加css樣式,JavaScript動態添加css樣式和script標簽

[動態添加css樣式]window.οnlοadfunction(){var headdocument.getElementsByTagName(head)[0];     //獲取到head元素var linkdocument.createElement(link);             //創建link元素節點&#xff0c;也就是link標簽link.rel"stylesheet";  …

java中Cookie中文字符亂碼問題

如果Cookie中的Value 中有中文字符出現&#xff0c;在加入Cookie的時候&#xff0c;會出現下面的錯誤&#xff1a;  java.lang.IllegalArgumentException: Control character in cookie value or attribute.當我們設定Cookie的Value的值得時候&#xff1a;  cookie.setValue…

湖北省仙桃市2021年高考成績查詢,2021年4月湖北仙桃市自考成績查詢時間和有效期是多久?...

2021年4月湖北仙桃市自考成績查詢時間和有效期是多久?根據《2021年4月湖北自考成績公布及復查事項通知》知悉&#xff0c;2021年4月湖北仙桃市自考成績查詢時間為5月12日起&#xff0c;官方成績查詢入口已開通。一、2021年4月湖北仙桃市自考成績查詢入口及流程2021年4月湖北仙…

html5 手機拍視頻濾鏡,用canvas實現圖片濾鏡效果附演示_html5教程技巧

這是一個很有意思的特效&#xff0c;模擬攝像機拍攝電視屏幕畫面時出現點狀顆粒的效果。顆粒的大小通過變換矩陣實現&#xff0c;可以任意調節&#xff0c;有興趣研究的朋友可以嘗試更多的效果&#xff0c;代碼沒有經過優化&#xff0c;只是一個粗糙的Demo&#xff0c;大家可以…

java中得到classpath和當前類的絕對路徑的一些方法(路徑中的%20進行替換空格)...

原網址&#xff1a;http://blog.csdn.net/shendl/article/details/1427475&#xff08;注意&#xff1a;利用下面方式得到路徑&#xff0c;如果路徑中有空格字符&#xff0c; 那么會有"%20"進行替換&#xff0c; 所以得到之后再將"%20"替換成空格&#xff…

計算機的好處英語,電腦的好處英語演講稿

電腦的好處英語演講稿The computer plays the vital role in ours life, the computer may help us to handle very many matters: The data computation, the study entertainment, the office automation, the control production, draws money automatically, long-distance…

jsp實現簡單的分頁

效果如下&#xff1a;<%-- Document : pageCreated on : 2014-11-18, 8:55:02Author : HJZ --%><%page contentType"text/html" pageEncoding"UTF-8"%> <!DOCTYPE html> <html><head><script language "javas…

臺式計算機有什么配置,目前臺式電腦的主流配置有哪些?

主流配置的話&#xff0c;目前CPU基本都上八代8100/8400/8700主板b360m板子比較火&#xff0c;不超頻很合適內存條的話360只支持2666所以一般都是上8g2400的條子硬盤的話現在固態降價了&#xff0c;且主板支持nvme 256g性價比不錯 看需求&#xff0b;機械顯卡的話1060系列甜品級…

javaBean和jsp應用

原網頁&#xff1a;http://www.douban.com/note/102320977/ JavaBean是一種可復用&#xff0c;跨平臺的組件。共有兩種JavaBean&#xff1a;一種無用戶界面&#xff0c;這種一般用于處理數據運算&#xff0c;操作數據庫等。另一種是有用戶界面(User Interface)的JavaBean. 在Js…

計算機重應用,裝了一大堆應用,iPhone6會變重嗎?

你有沒有想過&#xff0c;iPhone買來以后裝入數十甚至上百個應用&#xff0c;手機是否在重量上發生了變化。廣泛接受馬克思主義教育的人類表示&#xff1a;別鬧了&#xff0c;數據和信息屬于意識&#xff0c;怎么能有重量(或者應該叫質量)。更何況這個所謂的“信息爆炸”時代每…

SQLExecption:Operation not allowed after ResultSet closed解決辦法

原網址&#xff1a;http://blog.csdn.net/sku0923/article/details/1722370 一個stmt多個rs進行操作引起的ResultSet已經關閉錯誤 一個stmt多個rs進行操作. 那么從stmt得到的rs1,必須馬上操作此rs1后,才能去得到另外的rs2,再對rs2操作. 不能互相交替使用,會引起rs已經關閉錯誤.…

2003正在鎖定計算機,WIN2003 自動鎖定怎么解決?

那么網速慢的作祟者是什么呢&#xff1f;依筆者推斷原因主要有二。■網絡協議配置問題&#xff0c;■WinXP計劃任務的問題。但如果其它Windows電腦在網上鄰居中根本看不到WinXP那臺電腦&#xff0c;便可能是用戶鎖定和安全策略沒有設置好。這時就需要從以下幾個方面入手&#x…

Ajax在IE瀏覽器會出現中文亂碼解決辦法

在AJAX瀏覽器來進行發送數據時&#xff0c;一般它所默認的都是UTF-8的編碼. Ajax在IE瀏覽器會出現中文亂碼的情況&#xff01;解決辦法如下<script type"text/javascript"> function showDiv(str){ document.getElementById("picDiv").style.displ…