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

时间:2015-02-10 18:55:19

标签: math line limit conceptual radius

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

基本上,我当前的代码绘制一条线,从中心(窗口)开始,并在任何时间,每帧结束于我的鼠标位置 - 我最终得到一条跟随我的鼠标的线,从中心。

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

如果这个问题措辞严厉,我很抱歉,在我看来这是有道理的,而且我不知道怎么说出来。

我不一定需要C ++的代码答案,只需要概念。我已经尝试了一些涉及规范化,单位向量等的方法。但我只是卡住了。

非常感谢您抽出宝贵时间!

1 个答案:

答案 0 :(得分:1)

从上面的评论中解释:

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));
}