Javascript 如何找到旋转图像与顶线接触的x

Javascript 如何找到旋转图像与顶线接触的x,javascript,math,geometry,html5-canvas,Javascript,Math,Geometry,Html5 Canvas,请参见此处所示的问题: 我有一个基于角度旋转的图像,并拉伸以匹配底部和顶部线条。 我的问题是:如何找到图像与顶线接触的X JsFiddle提供了一个示例 X在第28行计算(有故障) let angle = 0; // Is dynamic const width = 500; const height = 100; const padding = 100; const canvas = document.createElement("canvas"); const stage = new cr

请参见此处所示的问题:

我有一个基于角度旋转的图像,并拉伸以匹配底部和顶部线条。 我的问题是:如何找到图像与顶线接触的X

JsFiddle提供了一个示例

X在第28行计算(有故障)

let angle = 0; // Is dynamic

const width = 500;
const height = 100;
const padding = 100;
const canvas = document.createElement("canvas");
const stage = new createjs.Stage(canvas);
const img = new Image();
const bitmap = new createjs.Bitmap(img);
const baseGrid = new createjs.Shape();
const point = new createjs.Shape();

// Update angle each 30ms
setInterval(()=>{
  if (angle++ > 90) angle = 0;
  draw();
}, 30)

// Draw when image is loaded (arrow image)
img.src = getBase64();
img.addEventListener("load", ()=>{
    draw();
});

// Draw function
function draw(){
  const magicScaleFormular = 1 / Math.cos(angle * Math.PI / 180) 
  const magicXFormular = width - (width / magicScaleFormular); // <-- X formular

    stage.y = padding;
    stage.addChild(baseGrid, bitmap, point);
    Object.assign(canvas, {width, height: height + (padding * 2)});

    bitmap.regX = (img.width / 2);
    bitmap.regY = img.height;
    bitmap.y = height;
    bitmap.rotation = angle;
    bitmap.scaleY = magicScaleFormular; 

  point.graphics.clear()
    .beginFill("red")
    .drawCircle(0,0,10);

  point.x = magicXFormular;

    baseGrid.graphics
        .beginStroke("red")
        .setStrokeStyle(4)
        .moveTo(0,0)
        .lineTo(width, 0)
        .moveTo(0, height)
        .lineTo(width, height)

    stage.update();
    document.body.append(canvas);
}
let angle=0;//是动态的
常数宽度=500;
常数高度=100;
常数填充=100;
const canvas=document.createElement(“canvas”);
const stage=new createjs.stage(画布);
const img=新图像();
常量位图=新的createjs.bitmap(img);
const baseGrid=new createjs.Shape();
const point=new createjs.Shape();
//每30毫秒更新一次角度
设置间隔(()=>{
如果(角度+++>90)角度=0;
draw();
}, 30)
//加载图像时绘制(箭头图像)
img.src=getBase64();
img.addEventListener(“加载”,()=>{
draw();
});
//绘图函数
函数绘图(){
常数magicScaleFormular=1/Math.cos(角度*Math.PI/180)

const magicXFormular=width-(width/magicCaleformular);//要使用另一个计算三角形的一个中心线,您需要相切

const magicXFormular = 100 * Math.tan(angle * Math.PI / 180);

太棒了!非常感谢。我非常感谢你的时间!这真的帮助了我。我已经更新了小提琴,让其他人看到:不要忘了将100改为适当的变量/常数