Javascript 在三角形中动态排列元素?
我正在寻找一个JS函数来动态排列三角形中的元素,如下图所示: 元素的数量取决于用户的选择,因此每次都会有所不同。Javascript 在三角形中动态排列元素?,javascript,jquery,dynamic,geometry,Javascript,Jquery,Dynamic,Geometry,我正在寻找一个JS函数来动态排列三角形中的元素,如下图所示: 元素的数量取决于用户的选择,因此每次都会有所不同。 我试着画了一个圆,但画三角形似乎很难。在图上可以清楚地看到,只有一定数量的元素可以以这种方式排列。这个数字应该可以被3整除。首先,检查前提条件。然后将您拥有的元素总量分成三组,并将每组均匀分布在每个边界上。因此,现在我提出了以下建议: 它可以完成任务,但我不喜欢手动添加最后一个圆。试试这个: function drawTriangle(ctx, sideLength) { v
我试着画了一个圆,但画三角形似乎很难。在图上可以清楚地看到,只有一定数量的元素可以以这种方式排列。这个数字应该可以被3整除。首先,检查前提条件。然后将您拥有的元素总量分成三组,并将每组均匀分布在每个边界上。因此,现在我提出了以下建议: 它可以完成任务,但我不喜欢手动添加最后一个圆。试试这个:
function drawTriangle(ctx, sideLength) {
var i = 0, direction = 1;
ctx.save();
ctx.strokeStyle = 'rgba(0, 0, 0, 1)';
ctx.beginPath();
ctx.moveTo(0, 0);
for (; i < 3; i += 1) {
ctx.rotate(Math.PI / -3);
ctx.lineTo(direction * sideLength, 0);
ctx.translate(direction * sideLength, 0);
direction *= -1;
}
ctx.closePath();
ctx.stroke();
ctx.restore();
}
function drawCircle(ctx) {
ctx.save();
ctx.fillStyle = 'rgba(255, 0, 0, 1)';
ctx.beginPath();
ctx.arc(0, 0, 3, 0, 2 * Math.PI, true);
ctx.closePath();
ctx.fill();
ctx.restore();
}
function drawCircles(ctx, num, sideLength) {
var stepLength = (sideLength * 3) / num, i = 0;
ctx.save();
for (; i < num; i += 1) {
if ((stepLength * i) % sideLength === 0) {
ctx.rotate(2 * Math.PI / 3);
}
drawCircle(ctx);
ctx.translate(-stepLength, 0);
}
ctx.restore();
}
var
canvas = document.getElementById('canvas'),
ctx = canvas.getContext('2d'),
sideLength = 200;
if (ctx) {
ctx.translate(50, 225);
drawTriangle(ctx, sideLength);
drawCircles(ctx, 14 * 3, sideLength);
}
函数drawTriangle(ctx,边长){
变量i=0,方向=1;
ctx.save();
ctx.strokeStyle='rgba(0,0,0,1)';
ctx.beginPath();
ctx.moveTo(0,0);
对于(;i<3;i+=1){
ctx.旋转(Math.PI/-3);
ctx.lineTo(方向*边长,0);
平移(方向*边长,0);
方向*=-1;
}
ctx.closePath();
ctx.stroke();
ctx.restore();
}
函数drawCircle(ctx){
ctx.save();
ctx.fillStyle='rgba(255,0,0,1)';
ctx.beginPath();
ctx.arc(0,0,3,0,2*Math.PI,真);
ctx.closePath();
ctx.fill();
ctx.restore();
}
函数drawCircles(ctx、num、边长){
变量步长=(边长*3)/num,i=0;
ctx.save();
对于(;i
演示:谢谢。我已经做了这个数字可以被3整除的部分。如何在边界上分散一个组?101如何绘制三角形=)在边界上,将标记等分放置,怎么样?你应该有边界两端的坐标(因为你画的是三角形,所以你肯定有),并且知道要放置的元素的数量,这样你就可以以相等的步骤来完成。所以现在我想到了这个:它可以完成任务,但我不喜欢手动添加最后一个圆。我试着从这个角度出发:也试着画三条线,每一条线旋转成一个三角形。提供了相当好的结果,但我想知道是否有一个适当的方法来做到这一点。