我正在寫一個WPF中的應用程序,並且遇到了一個問題。如下圖所示,我需要一種算法來確定指定點P是否位於圓圈的陰影區域內。陰影區域只是具有方向(陰影區域正在查看的位置)和角度的圓的一部分。點內餡餅
Q
點內餡餅
3
A
回答
4
數學第一:
令V = P - Ç 設U =(1,0):用以上
所示的幾何檢查| v | <ř
角度= ACOS(v.u/| V |)
檢查的角度是在範圍內。
在WPF:
Vector v = p - (new Point(0,0));
if(v.Length > radius)
return false;
double angle = -Vector.AngleBetween(v, new Vector(1,0));
...
下面是一個未經測試的類
class Pie
{
public Point Center { get; set; }
public double Radius { get; set; }
public Vector ZeroDegrees { get; set; }
public bool ClockwisePositive { get; set; }
public double GetAngle(Point p)
{
if (ClockwisePositive)
return (Vector.AngleBetween(p - Center, ZeroDegrees) + 360) % 360;
else
return (Vector.AngleBetween(ZeroDegrees, p - Center) + 360) % 360;
}
public bool Contains(Point p)
{
return (p - Center).Length <= Radius;
}
public class Slice
{
public Pie Parent { get; set; }
public double DirectionDegrees { get; set; }
public double SizeDegrees { get; set; }
public bool Contains(Point p)
{
if (!Parent.Contains(p))
return false;
double angle = Parent.GetAngle(p);
double minAngle = (DirectionDegrees - SizeDegrees/2 + 360) % 360;
double maxAngle = (DirectionDegrees + SizeDegrees/2 + 360) % 360;
if (minAngle < maxAngle)
return minAngle <= angle && angle <= maxAngle;
else
return angle >= minAngle || angle <= maxAngle;
}
}
}
+0
非常優雅的解決方案,謝謝! – Dave
0
假設你首先測試的是P是圈子裏面,和你知道的餅塊
一個開始和結束的角度。找到線段CP(CPa)的方向 - 這應該是相當基本的觸發器
b。檢查是否CPA是開始和結束角度之間的餅塊
相關問題
- 1. CSS3餡餅笨
- 2. 餡餅餅圖在Highcharts
- 3. Highchart餡餅 - 動態數組動態餡餅
- 4. ggplot2餅圖可變餡餅尺寸
- 5. 美味的餡餅搜索
- 6. 按鈕和餡餅的Css
- 7. ZedGraph刪除餡餅切片?
- 8. Highcharts {}餡餅 - 樣式僅切出的片
- 9. Shinobi:餡餅輻條的位置
- 10. raphaeljs餡餅動態值陣列變化
- 11. CSS3餡餅不適用於SASS/Compass
- 12. R - 餡餅,X值必須爲正值
- 13. 傳說是在HighCharts餡餅刷新
- 14. Highcharts甜甜圈圖表沒有內餡餅?
- 15. ExtJs 4餅圖 - 重新大小的餡餅切片
- 16. Highcharts半餅 - 刪除餡餅和傳奇之間的空間
- 17. ChartJS v2 - 懸停在餅餡餅/炸面圈餅上時的外部圓弧
- 18. 字符串內部的字符串例如:餡餅=「他說」嗨「」 - C#
- 19. 使用DIV DOM元素創建一個弧和一個餡餅
- 20. highcharts餡餅窗口調整大小問題
- 21. 重構D3 V3餡餅版本4意外行爲
- 22. (Highcharts)極地楔形/浮動餡餅區段
- 23. 如何更改餡餅切片的顏色?
- 24. 誰知道如何放下在離子2餡餅的標題
- 25. css餡餅只對外業元素不起作用
- 26. 如何繪製顏色列表的餡餅
- 27. JS谷歌圖表不能改變餡餅背景顏色
- 28. 餡餅加載器2進步的顏色,CSS,html,javascript
- 29. 我想刪除ajax餡餅聊天的默認框邊框
- 30. 漂亮的餡餅菜單中的子菜單jquery
起初,我想出了一個類似的解決方案爲答案,但是我必須理解如何,因爲他們去解決這個角度問題從0到360然後環繞。現在正在工作。 – Dave