From 2c7e884676006b54284b6441fb6f711dd1f8e008 Mon Sep 17 00:00:00 2001 From: Michal Pekacki Date: Tue, 4 Jul 2023 16:01:54 +0200 Subject: [PATCH 1/2] Update ViewCone.cs --- Security_Engine/Query/ViewCone.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Security_Engine/Query/ViewCone.cs b/Security_Engine/Query/ViewCone.cs index 7813155a3..179a17708 100644 --- a/Security_Engine/Query/ViewCone.cs +++ b/Security_Engine/Query/ViewCone.cs @@ -48,7 +48,7 @@ public static PolyCurve ViewCone(this CameraDevice cameraDevice) Point targetLocation = cameraDevice.TargetPosition; double radius = targetLocation.Distance(cameraLocation); double horizontal = cameraDevice.HorizontalFieldOfView; - double angle = Math.Atan(horizontal / radius); + double angle = Math.Asin(horizontal / (2 * radius)) * 2; Vector direction = BH.Engine.Geometry.Create.Vector(cameraLocation, cameraDevice.TargetPosition); Vector startPointDir = direction.Rotate(-angle / 2, Vector.ZAxis); From 0268ef10064d836eb6b9fb00e48fd6ea69e2aaf0 Mon Sep 17 00:00:00 2001 From: Michal Pekacki Date: Tue, 4 Jul 2023 17:07:16 +0200 Subject: [PATCH 2/2] update after comments --- Security_Engine/Query/ViewCone.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Security_Engine/Query/ViewCone.cs b/Security_Engine/Query/ViewCone.cs index 179a17708..6e7eecd83 100644 --- a/Security_Engine/Query/ViewCone.cs +++ b/Security_Engine/Query/ViewCone.cs @@ -46,13 +46,13 @@ public static PolyCurve ViewCone(this CameraDevice cameraDevice) Point cameraLocation = cameraDevice.EyePosition; Point targetLocation = cameraDevice.TargetPosition; - double radius = targetLocation.Distance(cameraLocation); - double horizontal = cameraDevice.HorizontalFieldOfView; - double angle = Math.Asin(horizontal / (2 * radius)) * 2; + double coneRadius = targetLocation.Distance(cameraLocation); + double coneArcLength = cameraDevice.HorizontalFieldOfView; + double coneAngle = Math.Asin(coneArcLength / (2 * coneRadius)) * 2; - Vector direction = BH.Engine.Geometry.Create.Vector(cameraLocation, cameraDevice.TargetPosition); - Vector startPointDir = direction.Rotate(-angle / 2, Vector.ZAxis); - Vector endPointDir = direction.Rotate(angle / 2, Vector.ZAxis); + Vector viewDirection = BH.Engine.Geometry.Create.Vector(cameraLocation, cameraDevice.TargetPosition); + Vector startPointDir = viewDirection.Rotate(-coneAngle / 2, Vector.ZAxis); + Vector endPointDir = viewDirection.Rotate(coneAngle / 2, Vector.ZAxis); Point startPoint = cameraLocation + startPointDir; Point endPoint = cameraLocation + endPointDir;