다음 코드는 평면을 시각화하기 위해 법선 벡터와 반경을 정의합니다. 내 질문은 d
및 오프셋에 대한 것입니다. d
은 비행기 방정식 Ax+By+Cz+D=0
에서 D입니다 (d
을 제공해야하므로 해당 코드가 하나도 없기 때문에)? 이 코드는 3D 점이 평면의 앞/뒤, 좌/우에 위/아래인지 정의하는 데 도움이됩니다. 이 점을 이해하는 데 도움이되는 피드백은 크게 감사하겠습니다.3d 점이있는 평면 작성
**function [fixture,n,min_radius] = planePointPoint(p1,p2,p3,q,d,varargin)**
% p1, p2 and p3 -3d points that define an oriented plane.
%q is the point that is tested against this plane
% p1+offset is the fixture point for the plane.
% d is the offset distance for the plane in the direction of n.
% optional argument offset is a 3-vector denoting an offset to be added to the fixture point during min_radius calculation
%
% function returns sequence of fixture points and unit normals along with
% minimum radii that make sense to visualize position of q in relation to the plane.
offset = [0;0;0];
if (nargin>6)
offset = varargin{1};
end
n = cross(p1 - p3,p2 - p3);%defines normal vector
n = n./repmat(sqrt(sum(n.^2)),3,1);%normalise normal vector
offset = repmat(offset,1,mot.nframes) - repmat(dot(n,repmat(offset,1,mot.nframes)),3,1).*n;
%points = p1 + n*d;
fixture = p1+offset + n*d;
dist_q = dot(n,q-fixture);
dist_p1 = dot(n,p1-fixture);
dist_p2 = dot(n,p2-fixture);
dist_p3 = dot(n,p3-fixture);
q_proj = q - repmat(dist_q,3,1).*n;
p1_proj = p1 - repmat(dist_p1,3,1).*n;
p2_proj = p2 - repmat(dist_p2,3,1).*n;
p3_proj = p3 - repmat(dist_p3,3,1).*n;
radius_q = sqrt(sum((fixture-q_proj).^2));
radius_p1 = sqrt(sum((fixture-p1_proj).^2));
radius_p2 = sqrt(sum((fixture-p2_proj).^2));
radius_p3 = sqrt(sum((fixture-p3_proj).^2));
min_radius = max([radius_q; radius_p1; radius_p2; radius_p3]);
응답을 주셔서 감사합니다. 내가 너무 믿습니다. 나는 사용자로부터 d를 묻는 이유를 이해할 수 없습니다. 기본적으로 코드는 비행기를 움직이기위한 것이므로, 최대 반경을 찾은 것으로 생각합니다. 비행기를 움직이기위한 디스크를 만드십시오. 저는 여러분의 동일한 코드를 사용하여 비행기와 관련하여 삼차원의 삼각형 포인트가 어디에 있는지 정의합니다. –
정상 벡터가 정규화 된 경우 D가 원점에서 서명 된 거리라는 것을 알았습니다. 내가 골격 모션에 대한 코드를 사용하기 때문에 사용자가 정의한 코드에서 임계점으로 사용할 수 있습니까 ?? 예를 들어 해골의 d = 2 * 상완골 길이. 코드의 고정물은 평면의 한 점에서 원점을 전송한다는 것을 의미합니까 ?? 다시 고마워요. 보리스, 대답은 –
안녕하세요. @ pap-00. 나는이 문제에 관해 당신을 도울 수 없을 것이라고 두려워합니다. 컨텍스트가 없으면 변수가 의미하는 바가 무엇인지 짐작할 수 없습니다. 어쨌든이 정보가 있더라도 시간이 많이 걸릴 수 있습니다 .--) 알아 내야 할 것입니다. 너 혼자서. 여전히 이해할 수없는 경우 라이브러리의 다른 사용자 또는 라이브러리 작성자에게 문의하십시오. – Boris