Javascript 计算绳子的长度和一个奇怪的结果
我试图在p5.js中计算圆形/椭圆形范围内的绳索长度。Javascript 计算绳子的长度和一个奇怪的结果,javascript,p5.js,Javascript,P5.js,我试图在p5.js中计算圆形/椭圆形范围内的绳索长度。 给出的参数是值和大小值是一个由3个值组成的简单数组:色调、饱和度和亮度。更重要的参数是size,它是形状(圆)的宽度和高度。 当for循环在size长度上迭代时,通过毕达哥拉斯定理计算出一半的跳线长度r是size大小或半径的一半y是循环的的当前值r^2-| y-r^2=x^2其中x是跳线长度的一半(不需要绝对值,但它或多或少只是为了确保和调试)。 然而,每当我在等式中求平方时,我就会得到下面的奇数形状。当我不在方程中求平方时,我得到旋转的平
给出的参数是
值
和大小
<代码>值是一个由3个值组成的简单数组:色调、饱和度和亮度。更重要的参数是size
,它是形状(圆)的宽度和高度。当
for
循环在size
长度上迭代时,通过毕达哥拉斯定理计算出一半的跳线长度r
是size
大小或半径的一半y
是循环的的当前值r^2-| y-r^2=x^2
其中x
是跳线长度的一半(不需要绝对值,但它或多或少只是为了确保和调试)。
然而,每当我在等式中求平方时,我就会得到下面的奇数形状。当我不在方程中求平方时,我得到旋转的平方。背景中的圆圈表示我试图显示的当前HSL
当我没有平方r
当I平方r
这是我当前的代码:
this.draw = function(values, size) {
//angleMode(DEGREES);
this.gap = values[2];
this.r = size / 2;
this.lCol = map(values[1], 0, 100, 10, 70)
strokeUniform(this.lCol);
fillUniform(map(values[2], 0, 100, this.lCol + 20, 240));
strokeWeight(map(values[0], 0, 360, 0, 10));
translate(this.r, this.r, 0);
for (y = 0; y < size; y++) {
if (y % Math.floor(this.gap / 2) == 0) {
if (this.r > y) {
this.len = ((this.r ^ 2 - (Math.abs(this.r - y) ^ 2))) ^ 0.5;
line(0 - this.len, 0 - (this.r - y), 0 + this.len, 0 - (this.r - y));
} else {
this.len = ((this.r ^ 2 - ((y - this.r) ^ 2))) ^ 0.5;
line(0 - this.len, y - this.r, 0 + this.len, y - this.r);
}
}
}
}
this.draw=函数(值、大小){
//角度模式(度);
此.gap=值[2];
这个。r=尺寸/2;
this.lCol=map(值[1],0,100,10,70)
冲程制服(this.lCol);
fillUniform(map(值[2],0100,this.lCol+20240));
冲程权重(map(值[0,0,360,0,10));
翻译(this.r,this.r,0);
对于(y=0;yy){
this.len=((this.r^2-(Math.abs(this.r-y)^2))^0.5;
行(0-this.len,0-(this.r-y),0+this.len,0-(this.r-y));
}否则{
this.len=((this.r^2-((y-this.r)^2))^0.5;
行(0-this.len,y-this.r,0+this.len,y-this.r);
}
}
}
}
这并没有达到您预期的效果:
r^2
^
符号是二进制数,它适用于二进制数。例如:
var x = 5; // 0101
var y = 1; // 0001
var z = x ^ y; // 0100
console.log(z); // 4
换句话说,XOR运算符查看数字二进制表示形式中的每个数字,如果只有一个参数为1,则结果数字为1
更多信息请点击此处:
您可能需要Math.pow()
函数。可以找到更多信息
更好的是,P5.js提供了sq()
函数。更多信息可在中找到
类似地,寻找Math.sqrt()
或P5.jssqrt()
函数,而不是使用^0.5
阅读Java中^
操作符的功能以及为什么它与Math.sqrt
不同。