o
o
o
ooooooooo
假设上面这个是扇形,(弧度脑补)
圆心角坐标 X = 300 , Y = 300
角度为 90 度,边长是 100
先画左边的线,直接从圆心角画到坐标 X = 300 , Y = 200
中间的弧不用管,这个时候应该有一个公式知道下面这条横线画到哪里
求这个公式,公式得出的结果应该是 X = 400 , Y = 300
同时,我要根据这个扇形依次在右下角,左下角,左上角分别画扇形,最后组成一个圆
每次的问题都一样,怎么知道另一个角的 X Y 坐标
求 JS 的公式代码。
1
b821025551b 2015-11-09 18:04:40 +08:00
原谅我“圆心角”、“圆心”傻傻分不清楚
|
2
xjx0524 2015-11-09 18:08:50 +08:00
那叫半径。。。
|
3
kokdemo 2015-11-09 18:08:54 +08:00
需要区分一下角度,这里以锐角为例
另一个端点的 y 坐标应该 原位置 + r * cos(α) |
4
xjx0524 2015-11-09 18:11:06 +08:00
|
5
imn1 2015-11-09 18:28:55 +08:00
顺时针、逆时针?
|
6
lightening 2015-11-09 18:59:30 +08:00
用解析几何,先做个坐标转换,假设圆心坐标 X0 Y0 ,一个角的坐标是 X1 Y1 ,角度 α
那么以取圆心为新的坐标原点,就有圆心在 (0,0),已知角的坐标是 (x1, y1)。注意转换后坐标是小写的。 x1 = X1 - X0 y1 = Y1 - Y0 然后转换到极坐标 半径 r = 根号(x1^2 + y1^2) 角度 θ = arctan(y1/x1) 然后看你顺时针还是逆时针转,给θ加某个角度(或弧度)。 φ = θ + α 然后再反退回直接坐标。 x2 = r * cos(φ) y2 = r * sin(φ) 别忘了把圆心的偏移加回去(转换回旧的坐标) X2 = x2 + X0 Y2 = y2 + Y0 |
7
zgk 2015-11-09 19:10:59 +08:00 via Android
高中数学选修 4-4 极坐标😁
|
8
staticor 2015-11-09 20:49:33 +08:00
主要是楼主的描述太影响阅读了... 要不我还是乐意帮忙贡献的....
|
10
iguoji OP @lightening 感谢你写的,不过我还是没看懂,如果是 JS 代码的话,我想我会很明白。
|
11
MCVector 2015-11-09 22:14:40 +08:00
旋转 + 平移,用矩阵,欧拉角皆可。不过边长是什么?是半径吗?
|
12
lightening 2015-11-10 05:24:14 +08:00
@iguoji 把上面的所有步骤写进 js 就可以了,反正已知 X0 Y0 X1 Y1 α,最后得出 X2 Y2 ,所有的中间变量我怎么算出来你也怎么算就行。注意大小写。
|
13
NeoAtlantis 2015-11-10 07:51:33 +08:00 via Android
看了半天没懂,慰问下楼主的数学和语文老师……
|
14
kiritoalex 2015-11-10 08:41:42 +08:00 via Android
|
15
NeoAtlantis 2015-11-10 08:42:36 +08:00 1
|
16
iguoji OP @NeoAtlantis
你怎么放图片的? 看着你的回答,参考我的描述,一边写思路。 C 在坐标系 XOY 里的圆心,即 C 的坐标是 X = 300 , Y = 300 AB ,是以 C 为圆心的一个扇形的两点,理解。 已知 A 点相对于 C 的角度,这个之前没想过 不是判断 AC 这条线具体该画哪,所以需要知道这个? 我在具体代码中,会先画 CB 线,顺时针 90°后再画 CA 这条线,所以我是根据 CB 为基础的 距离,扇形半径 R ,不明白这个的意思 CB 相对于 CA 的角度,即我描述中的扇形角度 90° B 坐标公式里, I 是什么? Re^(ia) R 空格 e ,是 R 乘以 e 吗, e 又是什么,假设 e=100,i = 200 。 JS 代码中是不是对应 R*100^(200*a) |
17
iguoji OP @lightening
用解析几何,先做个坐标转换,假设圆心坐标 X0 = 300 , Y0 = 300 一个角的坐标是 X1 = 300 , Y1 = 200 ,角度 α = 90 那么以取圆心为新的坐标原点,就有圆心在 (0,0), 已知角的坐标是 (x1, y1)。注意转换后坐标是小写的。 x1 = 0 y1 = -100 然后转换到极坐标 (这里出问题了) 半径 r = 根号(x1^2 + y1^2) 半径 r = Math.sqrt(0^2 + -100^2) JS 运行得到的结果不是数字, NaN |
18
NeoAtlantis 2015-11-10 09:37:54 +08:00 via Android
@iguoji 你只看最后用蓝框标出来的那两个,就是坐标
i 是虚数单位,上面一堆是推导, js 实现不了 但是你有必要把 R 和那两个角度自己求出来 我写的是一般情况, alpha 角就是第一条线和水平的夹角,你的第一条线是水平的, alpha 就是零。 几何上的角度正表示逆时针,负就是顺时针. |
19
urmyfaith 2015-11-10 09:39:53 +08:00
没有草图,看着好酸爽....
|
20
NeoAtlantis 2015-11-10 09:42:03 +08:00 via Android
|
21
just4test 2015-11-10 09:43:50 +08:00 via Android
这完全是三角函数知识有必要上解析几何么。。。。
|
22
NeoAtlantis 2015-11-10 09:49:55 +08:00 via Android
|
23
hienchu 2015-11-10 09:53:36 +08:00
你是培训班出来的吗?:P
|
24
skywatcher 2015-11-10 10:49:25 +08:00
描述太捉急了,圆心、圆心角,半径、边长傻傻分不清楚,顺便楼上那句话!你是培训班出来的吗?
|
25
icebreaker 2015-11-10 21:02:36 +08:00 1
这样子不是很简单吗?
var oX = 300, oY=300; var aX = 300, aY = 200; var origin = Math.atan((aY-oY)/(aX-oX)); var oDegree = origin * 180/Math.PI; var r = 100, degree =90; var calcdegree = oDegree + degree; var Radian = calcdegree * Math.PI/180; var x = Math.cos(Radian)*r, y = Math.sin(Radian)*r; var bX = oX + x, bY = oY +y; console.log("bx:"+ bX + ", by:" +bY); |
26
lightening 2015-11-10 22:57:23 +08:00
@just4test 他已知值是给坐标的,还是解析几何方便点。
|
27
iguoji OP @icebreaker 谢谢你。
|