gpt4 book ai didi

javascript - 对于圆内的点,找出它在哪四分之一?

转载 作者:行者123 更新时间:2023-11-28 15:14:29 31 4
gpt4 key购买 nike

我研究了谷歌,但找不到搜索关键字。所以我在这里问一下我的算法和代码是否高效?

http://sketchtoy.com/66429941 (算法)

算法是:我有四个点,分别是:圆的北、东、南、西。我检查 4 个距离(向北距离、向东距离、向南距离、向西距离)。我发现其中最少,所以这就是季度。

这是代码,但对我来说似乎效率不高。(第一季度是北,第二季度是东,依此类推..

注意:假设鼠标移动在圆圈内。

var firstQuarterX = centerX;
var firstQuarterY = centerY - radius;
var secondQuarterX = centerX + radius;
var secondQuarterY = centerY;
var thirdQuarterX = centerX;
var thirdQuarterY = centerY + radius;
var fourthQuarterX = centerX - radius;
var fourthQuarterY = centerY;

var distanceToFirst = Math.sqrt(Math.pow(x-firstQuarterX, 2) + Math.pow(y-firstQuarterY, 2));
var distanceToSecond = Math.sqrt(Math.pow(x-secondQuarterX, 2) + Math.pow(y-secondQuarterY, 2));
var distanceToThird = Math.sqrt(Math.pow(x-thirdQuarterX, 2) + Math.pow(y-thirdQuarterY, 2));
var distanceToFourth = Math.sqrt(Math.pow(x-fourthQuarterX, 2) + Math.pow(y-fourthQuarterY, 2));

var min = Math.min(distanceToFirst, distanceToSecond, distanceToThird, distanceToFourth);

var numbers = [distanceToFirst, distanceToSecond, distanceToThird, distanceToFourth];

var index = numbers.indexOf(min); // it will give 0 or 1 or 2 or 3

var quarter = index + 1;

最佳答案

观察您的宿舍之间的边界位于方程 y = x 的线上和y = -x ,相对于圆心的原点。您可以使用它们来评估每个点属于哪个季度。

如果你的点是( xy ),那么它相对于圆心的坐标是 xRelative = x - centerXyRelative = y - centerY 。然后

  • 如果yRelative < 0,您的点位于第一季度(代码中的南边)和Math.abs(xRelative) < -yRelative
  • 如果 xRelative > 0,则您的点位于第二(东)季度和Math.abs(yRelative) < xRelative
  • 如果 yRelative > 0,则您的点位于第三(北)季度和Math.abs(xRelative) < yRelative
  • 如果 xRelative < 0,则您的点位于第四(西)季度和Math.abs(yRelative) < -xRelative

我让您决定将恰好落在边界上的点分配给哪个季度。此外,如果您愿意,您可以根据这些标准实现一个小决策树;这应该比依次测试每个标准更有效。

关于javascript - 对于圆内的点,找出它在哪四分之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34658253/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com