请教个数学问题,编程相关。

2015-03-20 14:55:19 +08:00
 babyname
一个画布上,有6个点(每个10px),这6个点,围绕画布的中心,组成一个圆,每个点距离围绕画布的中心位置 50px,如何计算6个点的每个点x, y位置?谢谢。

6个点需要平均分布

4338 次点击
所在节点    程序员
34 条回复
kokutou
2015-03-20 15:00:50 +08:00
360/5=72度
然后三角函数算三角形另外一边的边长咯。
babyname
2015-03-20 15:03:34 +08:00
@kokutou 谢谢,不过不懂三角函数哎。
b821025551b
2015-03-20 15:05:37 +08:00
很显然的三角函数,sin(1/2),cos(1/2)神马的
ieiayaobb
2015-03-20 15:09:42 +08:00
请找初中同学做解析几何
justfly
2015-03-20 15:17:42 +08:00
极坐标转直角坐标 去搜一下吧 好久 都忘了
b821025551b
2015-03-20 15:21:58 +08:00
我无聊了

babyname
2015-03-20 15:33:28 +08:00
babyname
2015-03-20 15:34:22 +08:00
ca,按快了。
我学的已经还给老师了
@b821025551b 好强悍。
b821025551b
2015-03-20 15:51:50 +08:00
@babyname 周五闲着没事,用PS简单画了一下 :)
mengzhuo
2015-03-20 15:55:44 +08:00
0,0 为圆心
50px为半径
大部分编程语言的三角函数用弧度制
要画圆,所以theta 为 0 到 2 * pi
要六等份即
pos = [0,1/3pi,2/3pi,pi,4/3pi,5/3pi]

function (){
a = []
for p in pos {
a.append( (sin(p), cos(p))
}
return a
}

蹲坑手机上打的 没验证过
staticor
2015-03-20 16:55:14 +08:00
难道是大一作业...
Freakr
2015-03-20 17:14:47 +08:00
@staticor 感觉像初中,大一不是微积分么。
b821025551b
2015-03-20 17:17:03 +08:00
@Freakr 初中可解,貌似大学高数的前几节也有这个(当年高数重修了4次的泪奔了)
mengzhuo
2015-03-20 17:46:01 +08:00
wodesuck
2015-03-20 19:51:53 +08:00
我来一个用复数的
base = (-1) ** (1 / 3) * 50
points = [base ** i for i in range(0, 6)]
复数乘法即是向量旋转
(py3代码,py2貌似算不了负数的开方
huxiao1104
2015-03-20 20:10:58 +08:00
用极坐标就行了吧
wodesuck
2015-03-20 20:12:25 +08:00
@wodesuck 不对...50应该在下面乘的
base = (-1) ** (1 / 3)
points = [50 * base ** i for i in range(0, 6)]
yingluck
2015-03-20 20:16:13 +08:00
什么是均匀分布?应该有无数个解吧
lololol233
2015-03-21 10:25:11 +08:00
@yingluck 非也
第一个点的角度为1~60度时 解是不重复的
这段弧的长度是 60 / 360 * 2 * pi * 50px ~= 52px
所以就是52个解了
yingluck
2015-03-21 16:10:01 +08:00
@lololol233
是的,现在的场景是一个个的像素, 而不是笛卡尔坐标系上一个个的点
补充一下:
第一个点在 (0, pi/3] 区间内解才是不重复的。
把弧拉直算经过的像素,和原始的弧经过的像素数量是不一样的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/178250

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX