所以我得到了这个等式:
x^2 + y^2 = 16
你们大多数人都知道如何在图表中创建一个圆圈,但是如何将其转换为2d网格,就像双循环一样。
我尝试了什么:
for (int x = 0; x < 20; x++) {
for (int y = 0; y < 20; y++) {
if (Math.Pow(x, 2) + Math.Pow(y, 2) == 16) {
// place dot at x,y
}
}
}
此代码的结果是在网格中放置了两个点,而不是应该是圆圈的预期答案
答案 0 :(得分:1)
使用坐标转换,可以参数化您拥有的对象。在这种情况下,极坐标(Wikipedia)。
让您的对象由方程
的所有点描述成立。 形式的所有圆方程可以用极坐标进行参数化,即每个点可以表示为一对半径和角度。转换公式如下:
(这源于三角形,见维基百科)。
在您的情况下,r
与r = 4
保持不变。角度从0°
到360°
,或以弧度0
到2π
一直迭代。在伪代码中,您可以将其绘制为
const double r = 4.0;
for (double angle = 0; angle <= 360; angle += 0.5) {
//Convert polar coordinates to cartesian (x,y) coordinates
double x = r * Math.Cos(angle * Math.PI / 180.0);
double y = r * Math.Sin(angle * Math.PI / 180.0);
//Put a dot at (x,y)..
}
因子π/180
是从度数到弧度的转换因子。