代码之家  ›  专栏  ›  技术社区  ›  user2895102

数学概念:画线跟随鼠标,有半径限制

  •  0
  • user2895102  · 技术社区  · 11 年前

    这不是一个特定于一种编程语言的问题,更像是一个数学概念,尽管以防万一,我在Visual Studio上使用C++。

    基本上,我的当前代码画一条线,从(窗口的)中心开始,在任何时候,每一帧都以我的鼠标位置结束-我最后画一条从中心开始跟随鼠标的线。

    我的问题是,我怎么会得到完全相同的系统,除了无论我的鼠标离中心多远,这条线仍将遵循向量“centerToMouse”的方向,但它的长度永远只有100个单位(一旦MousePos和中心之间的距离超过100),这样我最终会得到一条线,它跟随(延伸/收缩)我的鼠标,但一旦我到达距离中心100个单位以上的地方,只要我的鼠标距离中心100多个单位,线就会保持100个单位长。

    很抱歉,如果这个问题措辞不当,在我看来这是有道理的,我不知道该怎么说。

    我不一定需要C++的代码答案,只需要概念。我尝试了一些方法,包括归一化、单位向量等,但我只是卡住了。

    非常感谢您抽出时间!

    1 回复  |  直到 11 年前
        1
  •  1
  •   Kevin    11 年前

    我以上评论的释义:

    radius = 100; 
    angle = atan2(mouse_position.y-center.y, mouse_position.x-center.x);
    if (distance(center, mouse_position) < radius){
        line_position = mouse_position;
    }
    else{
        line_position = center + Vector(radius*cos(angle), radius*sin(angle));
    }