[vtkusers] Locating a 3D position in 3D scheme from a XYZ coordinates
Dean Inglis
dean.inglis at camris.ca
Wed Sep 3 07:23:18 EDT 2008
Hi Wagner,
dummyCoords (pcoords method parameter) needs to be passed
through the calling window but you don't need to use it. Another
way to calculate xyz coords (for example, x):
double* spacing = = m_ImageData->GetSpacing();
x = m_coords[0]*spacing[0] + origin[0];
_____
From: Wagner Sales [mailto:wsales at gmail.com]
Sent: September-02-08 3:09 PM
To: dean.inglis at camris.ca
Cc: VTK users
Subject: Re: [vtkusers] Locating a 3D position in 3D scheme from a XYZ
coordinates
Hi Dean,
My point are defined in int XYZ, which Z are my slice, and XY the simple
pixel coordinate. Are no interpolation here. This points are used to
segment, works fine.
Bu I need to show this points on 3D. The only way that's I know until now
are the celllocation by vtkCell::EvaluateLocation. But are crashing, and I
think are thread problem since this method aren't thread safe. I tried with
the thread safe method too, and are not working. Based on your sugestion, I
tried the second option, which appears to be the correct to my case:
double dummyCoords[3];
int mCoords[3] = { m_XPosition, m_YPosition, m_ZPosition };
int ret = m_ImageData->ComputeStructuredCoordinates(viewCordinates,
mCoords, dummyCoords);
if(ret >0 )
{
std::cout << "Point inside. Coords are: " << viewCordinates[0] << ",
" << viewCordinates[1] << ", " << viewCordinates[2] << endl;
} else {
std::cout << "Point outside of volume" << endl;
}
Well, the point are always outside of the volume. dummyCoords ( pcoords
method parameter ) don't needs to be calculated?
Regards,
Wagner Sales
2008/9/1 Dean Inglis <dean.inglis at sympatico.ca>
Hi Wagner,
how are m_XPosition, m_YPosition, m_ZPosition defined?
Given a 3D double precision 3D spatial point:
vktIdType id = m_CurrentImageData->FindPoint(xyzCoords)
if(id > -1)
{
//do what you need to do with the point: it's valid!
}
if you have integer ijk indices:
double queryPoint[3];
double dummyPcoords[3];
if(m_CurrentImageData->ComputeStructuredCoordinates(queryPoint,myijkindices,
dummyPcoords) == 1)
{
//the ijk indices refer to a point in the 3D image volume and you have a
valid 3D point
//otherwise, try with different ijk indices
}
HTH
Dean
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20080903/9342b847/attachment.htm>
More information about the vtkusers
mailing list