


DISTANCEPOINTCIRCLE3D Distance between 3D points and 3D circle.
D = distancePointCircle3d(POINTS, CIRCLE)
Returns the euclidean distance D between POINTS and CIRCLE
Example
figure('color','w'); hold on; axis equal tight; view(3)
circle = [10 20 30 50 90 45 60];
drawCircle3d(circle)
% Get some points on the circle
pts = circle3dPoint(circle, 10:10:280);
drawPoint3d(pts,'.r')
% Get the normal of the circle
circleNormal = normalizeVector3d(transformVector3d([0 0 1], ...
eulerAnglesToRotation3d(circle(6), circle(5), circle(7), 'ZYZ')));
drawArrow3d(circle(1:3), circleNormal*25)
% Move points along the circle normal by 10 units
pts2 = pts + 10 * circleNormal;
drawPoint3d(pts2,'.g')
drawEdge3d([pts, pts2])
uniquetol(distancePointCircle3d(pts2, circle))
% Decrease the circle radius by 5 units
uniquetol(distancePointCircle3d(pts, [circle(1:3) circle(4)-5 circle(5:7)]))
See also
circles3d, projPointOnCircle3d

0001 function d = distancePointCircle3d(points, circle) 0002 %DISTANCEPOINTCIRCLE3D Distance between 3D points and 3D circle. 0003 % 0004 % D = distancePointCircle3d(POINTS, CIRCLE) 0005 % Returns the euclidean distance D between POINTS and CIRCLE 0006 % 0007 % Example 0008 % figure('color','w'); hold on; axis equal tight; view(3) 0009 % circle = [10 20 30 50 90 45 60]; 0010 % drawCircle3d(circle) 0011 % % Get some points on the circle 0012 % pts = circle3dPoint(circle, 10:10:280); 0013 % drawPoint3d(pts,'.r') 0014 % % Get the normal of the circle 0015 % circleNormal = normalizeVector3d(transformVector3d([0 0 1], ... 0016 % eulerAnglesToRotation3d(circle(6), circle(5), circle(7), 'ZYZ'))); 0017 % drawArrow3d(circle(1:3), circleNormal*25) 0018 % % Move points along the circle normal by 10 units 0019 % pts2 = pts + 10 * circleNormal; 0020 % drawPoint3d(pts2,'.g') 0021 % drawEdge3d([pts, pts2]) 0022 % uniquetol(distancePointCircle3d(pts2, circle)) 0023 % % Decrease the circle radius by 5 units 0024 % uniquetol(distancePointCircle3d(pts, [circle(1:3) circle(4)-5 circle(5:7)])) 0025 % 0026 % See also 0027 % circles3d, projPointOnCircle3d 0028 0029 % ------ 0030 % Author: oqilipo 0031 % E-mail: N/A 0032 % Created: 2023-07-25, using Matlab 9.13.0.2080170 (R2022b) Update 1 0033 % Copyright 2023-2024 0034 0035 % Project the points on the circle 0036 pointsProj2Circle = projPointOnCircle3d(points, circle); 0037 0038 % Calculate the distance between the points and the projected points 0039 d = distancePoints3d(points, pointsProj2Circle);