o
o 
o 
ooooooooo
假设上面这个是扇形,(弧度脑补)
圆心角坐标 X = 300 , Y = 300
角度为 90 度,边长是 100
先画左边的线,直接从圆心角画到坐标 X = 300 , Y = 200
中间的弧不用管,这个时候应该有一个公式知道下面这条横线画到哪里
求这个公式,公式得出的结果应该是 X = 400 , Y = 300
同时,我要根据这个扇形依次在右下角,左下角,左上角分别画扇形,最后组成一个圆
每次的问题都一样,怎么知道另一个角的 X Y 坐标
求 JS 的公式代码。
|  |      1b821025551b      2015-11-09 18:04:40 +08:00 原谅我“圆心角”、“圆心”傻傻分不清楚 | 
|  |      2xjx0524      2015-11-09 18:08:50 +08:00 那叫半径。。。 | 
|  |      3kokdemo      2015-11-09 18:08:54 +08:00 需要区分一下角度,这里以锐角为例 另一个端点的 y 坐标应该 原位置 + r * cos(α) | 
|  |      4xjx0524      2015-11-09 18:11:06 +08:00 | 
|  |      5imn1      2015-11-09 18:28:55 +08:00 顺时针、逆时针? | 
|  |      6lightening      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 | 
|  |      7zgk      2015-11-09 19:10:59 +08:00 via Android 高中数学选修 4-4 极坐标😁 | 
|  |      8staticor      2015-11-09 20:49:33 +08:00 主要是楼主的描述太影响阅读了... 要不我还是乐意帮忙贡献的.... | 
|      10iguoji OP @lightening 感谢你写的,不过我还是没看懂,如果是 JS 代码的话,我想我会很明白。 | 
|  |      11MCVector      2015-11-09 22:14:40 +08:00 旋转 + 平移,用矩阵,欧拉角皆可。不过边长是什么?是半径吗? | 
|  |      12lightening      2015-11-10 05:24:14 +08:00 @iguoji 把上面的所有步骤写进 js 就可以了,反正已知 X0 Y0 X1 Y1 α,最后得出 X2 Y2 ,所有的中间变量我怎么算出来你也怎么算就行。注意大小写。 | 
|  |      13NeoAtlantis      2015-11-10 07:51:33 +08:00 via Android 看了半天没懂,慰问下楼主的数学和语文老师…… | 
|  |      14kiritoalex      2015-11-10 08:41:42 +08:00 via Android | 
|  |      15NeoAtlantis      2015-11-10 08:42:36 +08:00  1 | 
|      16iguoji 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) | 
|      17iguoji 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 | 
|  |      18NeoAtlantis      2015-11-10 09:37:54 +08:00 via Android @iguoji 你只看最后用蓝框标出来的那两个,就是坐标 i 是虚数单位,上面一堆是推导, js 实现不了 但是你有必要把 R 和那两个角度自己求出来 我写的是一般情况, alpha 角就是第一条线和水平的夹角,你的第一条线是水平的, alpha 就是零。 几何上的角度正表示逆时针,负就是顺时针. | 
|      19urmyfaith      2015-11-10 09:39:53 +08:00 没有草图,看着好酸爽.... | 
|  |      20NeoAtlantis      2015-11-10 09:42:03 +08:00 via Android | 
|      21just4test      2015-11-10 09:43:50 +08:00 via Android 这完全是三角函数知识有必要上解析几何么。。。。 | 
|  |      22NeoAtlantis      2015-11-10 09:49:55 +08:00 via Android | 
|      23hienchu      2015-11-10 09:53:36 +08:00 你是培训班出来的吗?:P | 
|      24skywatcher      2015-11-10 10:49:25 +08:00 描述太捉急了,圆心、圆心角,半径、边长傻傻分不清楚,顺便楼上那句话!你是培训班出来的吗? | 
|  |      25icebreaker      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); | 
|  |      26lightening      2015-11-10 22:57:23 +08:00 @just4test 他已知值是给坐标的,还是解析几何方便点。 | 
|      27iguoji OP @icebreaker 谢谢你。 |