MCPcopy Create free account
hub / github.com/Kitware/VTK / SetNormal

Method SetNormal

Interaction/Widgets/vtkCoordinateFrameRepresentation.cxx:1164–1215  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

1162
1163//------------------------------------------------------------------------------
1164void vtkCoordinateFrameRepresentation::SetNormal(double x, double y, double z)
1165{
1166 double n[3] = { x, y, z };
1167 vtkMath::Normalize(n);
1168
1169 const double* xNormal = this->GetXVectorNormal();
1170 const double* yNormal = this->GetYVectorNormal();
1171 const double* zNormal = this->GetZVectorNormal();
1172 double newXNormal[3], newYNormal[3], newZNormal[3];
1173
1174 // if none of the vectors is locked
1175 if (!this->XVectorIsLocked && !this->YVectorIsLocked && !this->ZVectorIsLocked)
1176 {
1177 // find the vector that is closest to the picked normal using the max dot product
1178 const double xDot = vtkMath::Dot(n, xNormal);
1179 const double yDot = vtkMath::Dot(n, yNormal);
1180 const double zDot = vtkMath::Dot(n, zNormal);
1181 const double maxDot = std::max({ xDot, yDot, zDot });
1182 if (xDot == maxDot)
1183 {
1184 GramSchmidt(n, yNormal, zNormal, newXNormal, newYNormal, newZNormal);
1185 }
1186 else if (yDot == maxDot)
1187 {
1188 GramSchmidt(n, zNormal, xNormal, newYNormal, newZNormal, newXNormal);
1189 }
1190 else
1191 {
1192 GramSchmidt(n, xNormal, yNormal, newZNormal, newXNormal, newYNormal);
1193 }
1194 }
1195 // if one of the vectors is locked
1196 else
1197 {
1198 if (this->XVectorIsLocked)
1199 {
1200 GramSchmidt(n, yNormal, zNormal, newXNormal, newYNormal, newZNormal);
1201 }
1202 else if (this->YVectorIsLocked)
1203 {
1204 GramSchmidt(n, zNormal, xNormal, newYNormal, newZNormal, newXNormal);
1205 }
1206 else // ZVectorIsLocked
1207 {
1208 GramSchmidt(n, xNormal, yNormal, newZNormal, newXNormal, newYNormal);
1209 }
1210 }
1211 this->SetXVectorNormal(newXNormal);
1212 this->SetYVectorNormal(newYNormal);
1213 this->SetZVectorNormal(newZNormal);
1214 this->BuildRepresentation();
1215}
1216
1217//------------------------------------------------------------------------------
1218void vtkCoordinateFrameRepresentation::SetNormal(double n[3])

Callers 3

SetNormalToCameraMethod · 0.95
SetDirectionMethod · 0.95
PickNormalMethod · 0.95

Calls 5

BuildRepresentationMethod · 0.95
GramSchmidtFunction · 0.70
NormalizeFunction · 0.50
DotFunction · 0.50
maxFunction · 0.50

Tested by

no test coverage detected