5 个解决方案
#1
圆心坐标(Cx,Cy),半径r。
圆周方程 (x-Cx)^2 +(y-Cy)^2 = r^2;
所以
y1 = pow(r^2 - (x-Cx)^2, 0.5))+Cy;
y2 = -pow(r^2 - (x-Cx)^2, 0.5))+Cy;
把这两句转换为程序即可,所有的变量都是double或float。
x的取值范围是Cx-r到Cx+r。
因为是屏幕上的点,所以x取整数点就可以了。但如果x+1,y值的跨度大于1,你就得缩小x的步进。否则会有不连续的地方。
如果想做得更好看,还要考虑抗锯齿。
圆周方程 (x-Cx)^2 +(y-Cy)^2 = r^2;
所以
y1 = pow(r^2 - (x-Cx)^2, 0.5))+Cy;
y2 = -pow(r^2 - (x-Cx)^2, 0.5))+Cy;
把这两句转换为程序即可,所有的变量都是double或float。
x的取值范围是Cx-r到Cx+r。
因为是屏幕上的点,所以x取整数点就可以了。但如果x+1,y值的跨度大于1,你就得缩小x的步进。否则会有不连续的地方。
如果想做得更好看,还要考虑抗锯齿。
#2
倒了 数学贴
#3
解个数学方程不就得了
#4
也算是经典数学啦
#5
一楼的可行,不过为什么不用三角函数
#1
圆心坐标(Cx,Cy),半径r。
圆周方程 (x-Cx)^2 +(y-Cy)^2 = r^2;
所以
y1 = pow(r^2 - (x-Cx)^2, 0.5))+Cy;
y2 = -pow(r^2 - (x-Cx)^2, 0.5))+Cy;
把这两句转换为程序即可,所有的变量都是double或float。
x的取值范围是Cx-r到Cx+r。
因为是屏幕上的点,所以x取整数点就可以了。但如果x+1,y值的跨度大于1,你就得缩小x的步进。否则会有不连续的地方。
如果想做得更好看,还要考虑抗锯齿。
圆周方程 (x-Cx)^2 +(y-Cy)^2 = r^2;
所以
y1 = pow(r^2 - (x-Cx)^2, 0.5))+Cy;
y2 = -pow(r^2 - (x-Cx)^2, 0.5))+Cy;
把这两句转换为程序即可,所有的变量都是double或float。
x的取值范围是Cx-r到Cx+r。
因为是屏幕上的点,所以x取整数点就可以了。但如果x+1,y值的跨度大于1,你就得缩小x的步进。否则会有不连续的地方。
如果想做得更好看,还要考虑抗锯齿。
#2
倒了 数学贴
#3
解个数学方程不就得了
#4
也算是经典数学啦
#5
一楼的可行,不过为什么不用三角函数