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

2015 年 3 月 20 日
 babyname
一个画布上,有6个点(每个10px),这6个点,围绕画布的中心,组成一个圆,每个点距离围绕画布的中心位置 50px,如何计算6个点的每个点x, y位置?谢谢。

6个点需要平均分布

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

babyname
2015 年 3 月 20 日
babyname
2015 年 3 月 20 日
ca,按快了。
我学的已经还给老师了
@b821025551b 好强悍。
b821025551b
2015 年 3 月 20 日
@babyname 周五闲着没事,用PS简单画了一下 :)
mengzhuo
2015 年 3 月 20 日
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 年 3 月 20 日
难道是大一作业...
Freakr
2015 年 3 月 20 日
@staticor 感觉像初中,大一不是微积分么。
b821025551b
2015 年 3 月 20 日
@Freakr 初中可解,貌似大学高数的前几节也有这个(当年高数重修了4次的泪奔了)
mengzhuo
2015 年 3 月 20 日
wodesuck
2015 年 3 月 20 日
我来一个用复数的
base = (-1) ** (1 / 3) * 50
points = [base ** i for i in range(0, 6)]
复数乘法即是向量旋转
(py3代码,py2貌似算不了负数的开方
huxiao1104
2015 年 3 月 20 日
用极坐标就行了吧
wodesuck
2015 年 3 月 20 日
@wodesuck 不对...50应该在下面乘的
base = (-1) ** (1 / 3)
points = [50 * base ** i for i in range(0, 6)]
yingluck
2015 年 3 月 20 日
什么是均匀分布?应该有无数个解吧
lololol233
2015 年 3 月 21 日
@yingluck 非也
第一个点的角度为1~60度时 解是不重复的
这段弧的长度是 60 / 360 * 2 * pi * 50px ~= 52px
所以就是52个解了
yingluck
2015 年 3 月 21 日
@lololol233
是的,现在的场景是一个个的像素, 而不是笛卡尔坐标系上一个个的点
补充一下:
第一个点在 (0, pi/3] 区间内解才是不重复的。
把弧拉直算经过的像素,和原始的弧经过的像素数量是不一样的。

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

https://study.congcong.us/t/178250

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

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

© 2021 V2EX