1 // Copyright (c) 2013 OPEN CASCADE SAS
3 // The content of this file is subject to the Open CASCADE Technology Public
4 // License Version 6.5 (the "License"). You may not use the content of this file
5 // except in compliance with the License. Please obtain a copy of the License
6 // at http://www.opencascade.org and read it completely before using this file.
8 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
9 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
11 // The Original Code and all software distributed under the License is
12 // distributed on an "AS IS" basis, without warranty of any kind, and the
13 // Initial Developer hereby disclaims all such warranties, including without
14 // limitation, any warranties of merchantability, fitness for a particular
15 // purpose or non-infringement. Please see the License for the specific terms
16 // and conditions governing the rights and limitations under the License.
18 #ifndef _Prs3d_Point_H__
19 #define _Prs3d_Point_H__
22 #include <Graphic3d_ArrayOfPoints.hxx>
23 #include <Graphic3d_Vertex.hxx>
24 #include <Graphic3d_Group.hxx>
25 #include <Prs3d_Drawer.hxx>
26 #include <Prs3d_PointAspect.hxx>
27 #include <Prs3d_Root.hxx>
28 #include <Quantity_Length.hxx>
30 template <class AnyPoint, class PointTool>
31 class Prs3d_Point : Prs3d_Root
37 Standard_EXPORT static void DrawPoint
38 (const AnyPoint& thePoint,
39 const Handle(Graphic3d_Group) theGroup)
41 Quantity_Length aX,aY,aZ;
42 PointTool::Coord(thePoint,aX,aY,aZ);
43 Handle(Graphic3d_ArrayOfPoints) anArrayOfPoints = new Graphic3d_ArrayOfPoints (1);
44 anArrayOfPoints->AddVertex (aX, aY, aZ);
45 theGroup->AddPrimitiveArray (anArrayOfPoints);
49 Standard_EXPORT static void Add
50 (const Handle (Prs3d_Presentation)& thePresentation,
51 const AnyPoint& thePoint,
52 const Handle (Prs3d_Drawer)& theDrawer)
54 Handle(Graphic3d_Group) aGroup = Prs3d_Root::CurrentGroup(thePresentation);
55 aGroup->SetPrimitivesAspect(theDrawer->PointAspect()->Aspect());
56 DrawPoint(thePoint, aGroup);
59 Standard_EXPORT static Standard_Boolean Match
60 (const AnyPoint& thePoint,
61 const Quantity_Length theX,
62 const Quantity_Length theY,
63 const Quantity_Length theZ,
64 const Quantity_Length theDistance)
66 Quantity_Length aX,aY,aZ;
67 PointTool::Coord(thePoint, aX, aY, aZ);
68 return Sqrt((theX - aX)*(theX - aX) + (theY - aY)*(theY - aY)
69 + (theZ - aZ)*(theZ - aZ)) <= theDistance;