gpt4 book ai didi

javascript - 如何在 Canvas 上画一个简单的五边形

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:40 27 4
gpt4 key购买 nike

我想创建一个五 Angular 大楼,我成功创建了这样一个五 Angular 大楼。

但是我的五边形不对,因为它没有立在表面上。

我该如何解决?我需要一个优雅的答案,而不仅仅是一个快速修复

更新:

我还想知道一件事:

如何仅使用坐标绘制五边形,我指的是五边形的 5 个坐标?

我想根据五个已知坐标(v1,v2..v5)画一个五边形在没有任何循环的情况下,在五点之间绘制某种路径。

$(function(){
var canvas=document.getElementById("canvas");
var cxt=canvas.getContext("2d");
// hexagon
var numberOfSides = 5,
size = 100,
Xcenter = 150,
Ycenter = 150;

cxt.beginPath();
cxt.moveTo (Xcenter + size * Math.cos(0), Ycenter + size * Math.sin(0));

for (var i = 1; i <= numberOfSides;i += 1) {
cxt.lineTo (Xcenter + size * Math.cos(i * 2 * Math.PI / numberOfSides), Ycenter + size * Math.sin(i * 2 * Math.PI / numberOfSides));
}

cxt.strokeStyle = "#000000";
cxt.lineWidth = 1;
cxt.stroke();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="canvas" width=650 height=500></canvas>

最佳答案

有趣的问题,您可以移动 sin/cos 值,使底线水平对齐:

$(function(){
var canvas=document.getElementById("canvas");
var cxt=canvas.getContext("2d");
// hexagon
var numberOfSides = 5,
size = 100,
Xcenter = 150,
Ycenter = 150,
step = 2 * Math.PI / numberOfSides,//Precalculate step value
shift = (Math.PI / 180.0) * -18;//Quick fix ;)

cxt.beginPath();
//cxt.moveTo (Xcenter + size * Math.cos(0), Ycenter + size * Math.sin(0));

for (var i = 0; i <= numberOfSides;i++) {
var curStep = i * step + shift;
cxt.lineTo (Xcenter + size * Math.cos(curStep), Ycenter + size * Math.sin(curStep));
}

cxt.strokeStyle = "#000000";
cxt.lineWidth = 1;
cxt.stroke();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="canvas" width=650 height=500></canvas>

关于javascript - 如何在 Canvas 上画一个简单的五边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36529781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com