| 67 |
|
using namespace oopse; |
| 68 |
|
|
| 69 |
|
//typedef CGAL::Homogeneous<int> Kernel; |
| 70 |
< |
typedef CGAL::Simple_cartesian<double> Kernel; |
| 70 |
> |
typedef CGAL::Simple_cartesian<RealType> Kernel; |
| 71 |
|
//typedef CGAL::Polyhedron_3<Kernel> Polyhedron; |
| 72 |
|
|
| 73 |
|
typedef Kernel::Point_3 Point_3; |
| 627 |
|
}; |
| 628 |
|
|
| 629 |
|
|
| 630 |
< |
bool GeometryBuilder::isInsidePolyhedron(double x, double y, double z) { |
| 630 |
> |
bool GeometryBuilder::isInsidePolyhedron(RealType x, RealType y, RealType z) { |
| 631 |
|
|
| 632 |
|
Point_3 point(x,y,z); |
| 633 |
|
Plane_iterator i; |
| 637 |
|
|
| 638 |
|
Vector_3 newVector = point - k->vertex()->point(); |
| 639 |
|
Vector_3 normal = *i; |
| 640 |
< |
double dot_product = newVector.x() * normal.x() + newVector.y() * normal.y() + newVector.z() * normal.z(); |
| 640 |
> |
RealType dot_product = newVector.x() * normal.x() + newVector.y() * normal.y() + newVector.z() * normal.z(); |
| 641 |
|
|
| 642 |
|
if (dot_product < 0) { |
| 643 |
|
return false; |
| 648 |
|
} |
| 649 |
|
|
| 650 |
|
|
| 651 |
< |
GeometryBuilder::GeometryBuilder(double length,double width) { |
| 651 |
> |
GeometryBuilder::GeometryBuilder(RealType length,RealType width) { |
| 652 |
|
// Create the geometry for nanorod |
| 653 |
|
buildSingleCrystal<HalfedgeDS> singleCrystalNanorod; |
| 654 |
|
|
| 655 |
|
nanoRodPolyhedron.delegate( singleCrystalNanorod); |
| 656 |
|
|
| 657 |
< |
double y1 = singleCrystalNanorod.end1->point().y() - singleCrystalNanorod.neight1->point().y(); |
| 658 |
< |
double y2 = singleCrystalNanorod.end2->point().y() - singleCrystalNanorod.neight2->point().y(); |
| 657 |
> |
RealType y1 = singleCrystalNanorod.end1->point().y() - singleCrystalNanorod.neight1->point().y(); |
| 658 |
> |
RealType y2 = singleCrystalNanorod.end2->point().y() - singleCrystalNanorod.neight2->point().y(); |
| 659 |
|
|
| 660 |
< |
double endDist = sqrt(pow(singleCrystalNanorod.neight2->point().x() - singleCrystalNanorod.neight3->point().x(),2)+ |
| 660 |
> |
RealType endDist = sqrt(pow(singleCrystalNanorod.neight2->point().x() - singleCrystalNanorod.neight3->point().x(),2)+ |
| 661 |
|
pow(singleCrystalNanorod.neight2->point().y() - singleCrystalNanorod.neight3->point().y(),2)+ |
| 662 |
|
pow(singleCrystalNanorod.neight2->point().z() - singleCrystalNanorod.neight3->point().z(),2)); |
| 663 |
|
|
| 664 |
< |
double endRatio1 = y1/endDist; |
| 665 |
< |
double endRatio2 = y2/endDist; |
| 664 |
> |
RealType endRatio1 = y1/endDist; |
| 665 |
> |
RealType endRatio2 = y2/endDist; |
| 666 |
|
|
| 667 |
|
std::cout << "End dist is " << endDist <<" ratio " << endRatio1 << std::endl; |
| 668 |
|
|
| 681 |
|
std::transform( nanoRodPolyhedron.points_begin(), nanoRodPolyhedron.points_end(), nanoRodPolyhedron.points_begin(), aff_tranformation); |
| 682 |
|
|
| 683 |
|
|
| 684 |
< |
double endDist2 = sqrt(pow(singleCrystalNanorod.neight2->point().x() -singleCrystalNanorod.neight3->point().x(),2)+ |
| 684 |
> |
RealType endDist2 = sqrt(pow(singleCrystalNanorod.neight2->point().x() -singleCrystalNanorod.neight3->point().x(),2)+ |
| 685 |
|
pow(singleCrystalNanorod.neight2->point().y() - singleCrystalNanorod.neight3->point().y(),2)+ |
| 686 |
|
pow(singleCrystalNanorod.neight2->point().z() - singleCrystalNanorod.neight3->point().z(),2)); |
| 687 |
|
|
| 697 |
|
|
| 698 |
|
|
| 699 |
|
|
| 700 |
< |
GeometryBuilder::GeometryBuilder(double length,double width, bool twinned) { |
| 700 |
> |
GeometryBuilder::GeometryBuilder(RealType length,RealType width, bool twinned) { |
| 701 |
|
// Create the geometry for nanorod |
| 702 |
|
|
| 703 |
|
buildtwinned1<HalfedgeDS> crystal1; |
| 718 |
|
|
| 719 |
|
|
| 720 |
|
|
| 721 |
< |
double y1 = crystal1.end1->point().y() - crystal1.neight1->point().y(); |
| 722 |
< |
double y2 = crystal1.end2->point().y() - crystal1.neight2->point().y(); |
| 721 |
> |
RealType y1 = crystal1.end1->point().y() - crystal1.neight1->point().y(); |
| 722 |
> |
RealType y2 = crystal1.end2->point().y() - crystal1.neight2->point().y(); |
| 723 |
|
|
| 724 |
< |
double endDist = sqrt(pow(crystal1.neight2->point().x() - crystal1.neight3->point().x(),2)+ |
| 724 |
> |
RealType endDist = sqrt(pow(crystal1.neight2->point().x() - crystal1.neight3->point().x(),2)+ |
| 725 |
|
pow(crystal1.neight2->point().y() - crystal1.neight3->point().y(),2)+ |
| 726 |
|
pow(crystal1.neight2->point().z() - crystal1.neight3->point().z(),2)); |
| 727 |
|
|
| 728 |
< |
double endRatio1 = y1/endDist; |
| 729 |
< |
double endRatio2 = y2/endDist; |
| 728 |
> |
RealType endRatio1 = y1/endDist; |
| 729 |
> |
RealType endRatio2 = y2/endDist; |
| 730 |
|
|
| 731 |
|
std::cout << "End dist is " << endDist <<" ratio " << endRatio1 << std::endl; |
| 732 |
|
|
| 745 |
|
std::transform(nanoRodTwinnedPolyhedron1.points_begin(), nanoRodTwinnedPolyhedron1.points_end(), nanoRodTwinnedPolyhedron1.points_begin(), aff_tranformation); |
| 746 |
|
|
| 747 |
|
|
| 748 |
< |
double endDist2 = sqrt(pow(crystal1.neight2->point().x() - crystal1.neight3->point().x(),2)+ |
| 748 |
> |
RealType endDist2 = sqrt(pow(crystal1.neight2->point().x() - crystal1.neight3->point().x(),2)+ |
| 749 |
|
pow(crystal1.neight2->point().y() - crystal1.neight3->point().y(),2)+ |
| 750 |
|
pow(crystal1.neight2->point().z() - crystal1.neight3->point().z(),2)); |
| 751 |
|
|