方程到2d点

时间:2016-10-23 15:15:08

标签: c#

所以我得到了这个等式:

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
                }
            }
        }

此代码的结果是在网格中放置了两个点,而不是应该是圆圈的预期答案

1 个答案:

答案 0 :(得分:1)

使用坐标转换,可以参数化您拥有的对象。在这种情况下,极坐标(Wikipedia)。

让您的对象由方程

的所有点enter image description here描述

enter image description here

成立。 enter image description here形式的所有圆方程可以用极坐标进行参数化,即每个点可以表示为一对半径和角度enter image description here。转换公式如下:

enter image description here

(这源于三角形,见维基百科)。 在您的情况下,rr = 4保持不变。角度从360°,或以弧度0一直迭代。在伪代码中,您可以将其绘制为

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是从度数到弧度的转换因子。