javascript - 需要根据 Angular 找到 (x,y) 坐标

标签 javascript trigonometry angle

所以我很困惑。在此之前我不懂三 Angular 学,我一直在学习,但似乎没有任何作用。

enter image description here

有几点需要注意:在 html 中,笛卡尔原点(0,0) 是屏幕的左上角。 DIVS 自然旋转为 0deg 或 ---->这样。

我需要找到 ? 标记的 x,y 点。标记问题。

$('#wrapper').on('click', function(e){
    mouseX = e.pageX;
    mouseY= e.pageY;

    var angle  = getAngle(mouseX,Rocket.centerX,mouseY,Rocket.centerY);
    var angleDistance = Math.sqrt((Math.pow((mouseX - (Rocket.left+Rocket.halfX)),2)) + (Math.pow((mouseY-(Rocket.top+Rocket.halfY)),2)));
    var cp2Angle = -90 +(angle*2);
    var invCP2Angle = 90+ angle;
    var cp2Distance = angleDistance*.5;
    //Red Line
    $(this).append('<div class="line" style="transform-origin:left center;width:'+(Math.round(angleDistance))+'px;top:'+(Rocket.top+Rocket.halfY)+'px;left:'+(Rocket.left+Rocket.halfX)+'px;transform:rotate('+(Math.round(angle))+'deg);"></div>');
     //Blue Line
     $(this).append('<div class="line" style="background:#0000FF;transform-origin:left center;width:'+Math.round(cp2Distance)+'px;top:'+(mouseY)+'px;left:'+(mouseX)+'px;transform:rotate('+(Math.round(cp2Angle))+'deg);"></div>');
}
function getAngle(x2,x1,y2,y1){
    var angle = Math.degrees(Math.atan2(y2-y1,x2-x1));
    return angle;
}
Math.degrees = function(radians) {
  return (radians * 180) / Math.PI;
};

所以这可能会令人困惑。基本上,当我单击页面时,我使用 Math.atan2() 计算自定义原点和鼠标点之间的 Angular ;我还使用 Math.sqrt((Math.pow((x2 - x1),2)) + (Math.pow((y2-y1),2)));

计算距离

蓝线长度是红线长度的一半,但 Angular 会根据红线的 Angular 而变化。

当红线 Angular = 0deg(一条平线)时,蓝线 Angular 将为-90(或直上),在红线-45度时,蓝线将为-180(或平线),在红线-90,蓝线-270度(或垂直向下)。公式为-90 +( Angular *2)

我需要知道蓝线的另一端点。这些线仅用于调试,但需要该点,因为我有一个动画,我在贝塞尔曲线上为火箭设置动画,并且我需要根据鼠标单击的 Angular 更改控制点(如果有更好的计算方法)如果没有三 Angular 学,那么请告诉我。

我读到 Angular 与直线的斜率相同,并使用 Math.tan(以弧度表示的 Angular )找到它。有时,如果第一个 Angular 为 0 度,则三 Angular 形将是直 Angular 三 Angular 形;有时,它根本不是三 Angular 形,而是一条向下的直线,例如,如果单击 -90。

我也尝试过极坐标,但我不确定使用哪个 Angular :

var polarX = mouseX-(cp2Distance * Math.cos(Math.radians(invCP2Angle)));
var polarY = mouseY- (cp2Distance * Math.sin(Math.radians(invCP2Angle)));

最佳答案

我不太了解 javascript,所以我不会给你代码,而是给你公式。在下图中,我给出了所使用的约定。

enter image description here

x3 = x2 + cos(brownAngle + greenAngle) * d2
y3 = y2 + sin(brownAngle + greenAngle) * d2

如果我理解正确的话,您已经有了 d2 = 0.5 * d1d1(x2, y2) 以及 Angular 。只需将这些值代入上述公式即可。

关于javascript - 需要根据 Angular 找到 (x,y) 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39301508/

相关文章:

javascript - chrome.runtime.sendMessage 在重新加载 Chrome 扩展程序后从内容脚本中抛出异常

javascript - 相当于 elm (或 javascript)中的 std::nextafter (下一个可表示的 float )

c++ - 基于一个点的角度射击子弹

OpenCV三角函数: find object closest to the camera

android - 旋转图像,并显示旋转角度

java - 如何在 java 3d 中旋转相机/viewPlatform

javascript - 清除欧芹js中的从属字段错误

javascript - 将页面滚动转换为内部div的滚动百分比

python - 在 OpenCV 中旋转图像

r - 从纬度和经度计算角度