0

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

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

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

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

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

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

4

1 回答 1

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));
}
于 2015-02-10T19:28:37.020 回答