Javascript 多边形旋转
Javascript Polygon Rotation
这是我的代码
var numberOfSides,
angle = 0.2,
num = 8,
size = 100;
numberOfSides = prompt("How many sides would you like on your polygon");
c.translate( 300,300);
if (numberOfSides > 0) {
c.beginPath();
//for (var j = 0 ; j < num ; j ++ ){
c.lineTo(size * Math.cos(0),size * Math.sin(0));
for (var j = 0 ; j < num ; j ++ ){
for (var i = 0; i <= numberOfSides; i ++) {
c.lineTo(size * Math.cos(i * 2 * Math.PI / numberOfSides), size * Math.sin(i * 2 * Math.PI / numberOfSides));
}
c.rotate(angle);
}
c.strokeStyle = "#FF0000";
c.lineWidth = 2;
c.stroke();
c.fillStyle = "#FF0000";
}
我遇到的问题是在我的多边形的右下角有线条......谁能帮我解决这个问题
以下是绘制旋转规则多边形的方法:
function drawPolygon(centerX,centerY,theAngle,sides){
// save the untranslated & unrotated context state
c.save();
// translate and rotate the canvas
c.translate(centerX,centerY);
c.rotate(theAngle);
// draw the regular polygon
c.beginPath();
c.lineTo(size * Math.cos(0),size * Math.sin(0));
for (var i = 0; i <= sides; i ++) {
c.lineTo(size * Math.cos(i * 2 * Math.PI / sides), size * Math.sin(i * 2 * Math.PI / sides));
}
c.stroke();
// restore the context to its untranslated & unrotated state
c.restore();
}
下面是示例代码和动画演示:
var canvas=document.getElementById("canvas");
var c=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;
var numberOfSides=5,
angle = 0.2,
angleChange=Math.PI/60;
num = 8,
size = 40;
c.strokeStyle = "#FF0000";
c.lineWidth = 2;
c.fillStyle = "#FF0000";
if (numberOfSides > 0) {
requestAnimationFrame(animate);
}
function animate(time){
requestAnimationFrame(animate);
c.clearRect(0,0,canvas.width,canvas.height);
drawPolygon(150,150,angle,numberOfSides);
angle+=angleChange;
}
function drawPolygon(centerX,centerY,theAngle,sides){
// save the untranslated & unrotated context state
c.save();
// translate and rotate the canvas
c.translate(centerX,centerY);
c.rotate(theAngle);
// draw the regular polygon
c.beginPath();
c.lineTo(size * Math.cos(0),size * Math.sin(0));
for (var i = 0; i <= sides; i ++) {
c.lineTo(size * Math.cos(i * 2 * Math.PI / sides), size * Math.sin(i * 2 * Math.PI / sides));
}
c.stroke();
// restore the context to its untranslated & unrotated state
c.restore();
}
body{ background-color: ivory; padding:10px; }
#canvas{border:1px solid red;}
<canvas id="canvas" width=300 height=300></canvas>
相关文章:
- 知道为什么我的旋转木马不会自动更改图片吗
- SVG/JavaScript:尝试选择和更改多边形点
- 顺时针旋转Svg元件
- 将鼠标旋转限制为特定的度数
- 旋转后拖动对象
- 禁用旋转木马中的下一个按钮和上一个按钮
- 如何获取谷歌地图多边形的当前fillColor
- 手动创建旋转活动指示器
- 如何在容器中定位旋转的图像
- 如何在OpenLayers中获取动态绘制的多边形的坐标
- 在轴上旋转SVG图像
- 绕z轴旋转时出现iOS陀螺仪错误
- 旋转按钮[HTML][JS]
- Javascript 多边形旋转
- 在传单地图中围绕点旋转多边形
- 围绕点javascript画布旋转多边形
- 使用Leaflet.Path.Transform在Mapbox中旋转多边形
- 计算两个旋转矩形/多边形的碰撞和相交面积
- 旋转公式变形多边形
- 旋转多边形的计算