merge with next

This commit is contained in:
Guillaume Damiand 2011-06-09 13:51:23 +00:00
commit d2d010909f
417 changed files with 10432 additions and 3161 deletions

49
.gitattributes vendored
View File

@ -266,8 +266,7 @@ Approximate_min_ellipsoid_d/documentation/boundingbox.mw -text svneol=native#app
Arithmetic_kernel/include/CGAL/CORE_arithmetic_kernel.h -text
Arithmetic_kernel/include/CGAL/GMP_arithmetic_kernel.h -text
Arithmetic_kernel/include/CGAL/LEDA_arithmetic_kernel.h -text
Arithmetic_kernel/include/CGAL/OLD/GMP/Gmpfr_interval_type.h -text
Arithmetic_kernel/include/CGAL/OLD/Gmpfr_interval.h -text
Arithmetic_kernel/include/CGAL/MP_Float_arithmetic_kernel.h -text
Arithmetic_kernel/package_info/Arithmetic_kernel/description.txt -text
Arithmetic_kernel/package_info/Arithmetic_kernel/maintainer -text
Arithmetic_kernel/test/Arithmetic_kernel/Arithmetic_kernel.cpp -text
@ -1579,6 +1578,8 @@ Envelope_3/test/Envelope_3/data/spheres/stest6.cin -text
Envelope_3/test/Envelope_3/data/spheres/stest7.cin -text
Envelope_3/test/Envelope_3/data/spheres/stest8.cin -text
Envelope_3/test/Envelope_3/data/spheres/stest9.cin -text
Envelope_3/test/Envelope_3/data/triangles/edge_bug.cin -text
Envelope_3/test/Envelope_3/data/triangles/edge_bug_all.cin -text
Envelope_3/test/Envelope_3/data/triangles/grid_inter_tri_const_envelope.cin -text
Envelope_3/test/Envelope_3/data/triangles/grid_inter_tri_const_envelope_40.cin -text
Envelope_3/test/Envelope_3/data/triangles/grid_intersecting_triangles.cin -text
@ -1917,6 +1918,8 @@ Kernel_23/include/CGAL/internal/Projection_traits_3.h -text
Kernel_23/test/Kernel_23/CMakeLists.txt -text
Kernel_d/doc_tex/Kernel_d/hypercube.png -text
Kernel_d/doc_tex/Kernel_d_ref/Kernel_Compute_coordinate_d.tex -text
Kernel_d/doc_tex/Kernel_d_ref/Kernel_Less_coordinate_d.tex -text
Kernel_d/doc_tex/Kernel_d_ref/Kernel_Point_dimension_d.tex -text
Kernel_d/include/CGAL/Kernel_d/Cartesian_const_iterator_d.h -text
Kernel_d/test/Kernel_d/Linear_algebra-test.cmd eol=lf
Kinetic_data_structures/demo/Kinetic_data_structures/data/after002 -text
@ -2859,6 +2862,7 @@ Number_types/doc_tex/NumberTypeSupport_ref/CORE_BigFloat.tex -text
Number_types/doc_tex/NumberTypeSupport_ref/Gmpfi.tex -text
Number_types/doc_tex/NumberTypeSupport_ref/Gmpfr.tex -text
Number_types/doc_tex/NumberTypeSupport_ref/fundamental_types.tex -text
Number_types/doc_tex/NumberTypeSupport_ref/make_sqrt.tex -text
Number_types/doc_tex/NumberTypeSupport_ref/open.tex -text
Number_types/include/CGAL/GMP/Gmpfi_type.h -text
Number_types/include/CGAL/GMP/Gmpfi_type_static.h -text
@ -2867,6 +2871,7 @@ Number_types/include/CGAL/GMP/Gmpfr_type_static.h -text
Number_types/include/CGAL/Gmpfi.h -text
Number_types/include/CGAL/Gmpfr.h -text
Number_types/include/CGAL/Quotient_fwd.h -text
Number_types/include/CGAL/Root_of_traits_specializations.h -text
Number_types/include/CGAL/Sqrt_extension/Algebraic_extension_traits.h -text
Number_types/include/CGAL/Sqrt_extension/Algebraic_structure_traits.h -text
Number_types/include/CGAL/Sqrt_extension/Coercion_traits.h -text
@ -2879,12 +2884,15 @@ Number_types/include/CGAL/Sqrt_extension/Sqrt_extension_type.h -text
Number_types/include/CGAL/Sqrt_extension/Wang_traits.h -text
Number_types/include/CGAL/Sqrt_extension/convert_to_bfi.h -text
Number_types/include/CGAL/Sqrt_extension/io.h -text
Number_types/include/CGAL/Sqrt_extension_fwd.h -text
Number_types/include/CGAL/Test/test_root_of_traits.h -text
Number_types/include/CGAL/mpfi_coercion_traits.h -text
Number_types/include/CGAL/mpfr_coercion_traits.h -text
Number_types/test/Number_types/CMakeLists.txt -text
Number_types/test/Number_types/Gmpfi.cpp -text
Number_types/test/Number_types/Gmpfr.cpp -text
Number_types/test/Number_types/Gmpfr_bug.cpp -text
Number_types/test/Number_types/include/CGAL/Test/test_root_of_2_traits.h -text
Number_types/test/Number_types/include/CGAL/_test_io.h -text
Optimisation_doc/doc_tex/Bounding_volumes/annulus.gif -text svneol=unset#image/gif
Optimisation_doc/doc_tex/Bounding_volumes/annulus.pdf -text svneol=unset#application/pdf
@ -3049,6 +3057,7 @@ Polygon/doc_tex/Polygon/polygon.png -text
Polyhedron/demo/Polyhedron/MainWindow.ui -text
Polyhedron/demo/Polyhedron/Polyhedron_3.qrc -text
Polyhedron/demo/Polyhedron/Remeshing_dialog.ui -text
Polyhedron/demo/Polyhedron/Show_point_dialog.ui -text
Polyhedron/demo/Polyhedron/cgal_test_with_cmake eol=lf
Polyhedron/demo/Polyhedron/data/anchor.off -text svneol=unset#application/octet-stream
Polyhedron/demo/Polyhedron/data/bones.off -text svneol=unset#application/octet-stream
@ -3503,12 +3512,38 @@ Spatial_searching/doc_tex/Spatial_searching/windowQuery.png -text
Spatial_searching/include/CGAL/internal/K_neighbor_search.h -text
Spatial_searching/include/CGAL/internal/bounded_priority_queue.h -text
Spatial_searching/test/Spatial_searching/Compare_methods.cpp -text
Spatial_sorting/doc_tex/Spatial_sorting/fig/Hilbert-median.gif -text
Spatial_sorting/doc_tex/Spatial_sorting/fig/Hilbert-median.pdf -text
Spatial_sorting/doc_tex/Spatial_sorting/fig/Hilbert-middle.gif -text
Spatial_sorting/doc_tex/Spatial_sorting/fig/Hilbert-middle.pdf -text
Spatial_sorting/doc_tex/Spatial_sorting/fig/Hilbert8.gif -text
Spatial_sorting/doc_tex/Spatial_sorting/fig/Hilbert8.pdf -text
Spatial_sorting/doc_tex/Spatial_sorting/fig/hilbert.png -text
Spatial_sorting/doc_tex/Spatial_sorting/fig/hilbertLarge.jpg -text
Spatial_sorting/dont_submit -text
Spatial_sorting/examples/Spatial_sorting/data/input.cin -text
Spatial_sorting/examples/Spatial_sorting/example_delaunay_2.cmd -text
Spatial_sorting/examples/Spatial_sorting/sort_indices.cmd -text
Spatial_sorting/doc_tex/Spatial_sorting_ref/Hilbert_policy_tags.tex -text
Spatial_sorting/doc_tex/Spatial_sorting_ref/Hilbert_sort_d.tex -text
Spatial_sorting/doc_tex/Spatial_sorting_ref/SpatialSortingTraits_d.tex -text
Spatial_sorting/doc_tex/Spatial_sorting_ref/Spatial_sort_traits_adapter_2.tex -text
Spatial_sorting/doc_tex/Spatial_sorting_ref/Spatial_sort_traits_adapter_3.tex -text
Spatial_sorting/doc_tex/Spatial_sorting_ref/Spatial_sort_traits_adapter_d.tex -text
Spatial_sorting/examples/Spatial_sorting/hilbert.cpp -text
Spatial_sorting/examples/Spatial_sorting/hilbert_policies.cpp -text
Spatial_sorting/examples/Spatial_sorting/small_example_delaunay_2.cpp -text
Spatial_sorting/examples/Spatial_sorting/sp_sort_using_property_map_2.cpp -text
Spatial_sorting/examples/Spatial_sorting/sp_sort_using_property_map_3.cpp -text
Spatial_sorting/examples/Spatial_sorting/sp_sort_using_property_map_d.cpp -text
Spatial_sorting/include/CGAL/Hilbert_policy_tags.h -text
Spatial_sorting/include/CGAL/Hilbert_sort_d.h -text
Spatial_sorting/include/CGAL/Hilbert_sort_median_2.h -text
Spatial_sorting/include/CGAL/Hilbert_sort_median_3.h -text
Spatial_sorting/include/CGAL/Hilbert_sort_median_d.h -text
Spatial_sorting/include/CGAL/Hilbert_sort_middle_2.h -text
Spatial_sorting/include/CGAL/Hilbert_sort_middle_3.h -text
Spatial_sorting/include/CGAL/Hilbert_sort_middle_base.h -text
Spatial_sorting/include/CGAL/Hilbert_sort_middle_d.h -text
Spatial_sorting/include/CGAL/Spatial_sort_traits_adapter_2.h -text
Spatial_sorting/include/CGAL/Spatial_sort_traits_adapter_3.h -text
Spatial_sorting/include/CGAL/Spatial_sort_traits_adapter_d.h -text
Straight_skeleton_2/demo/Straight_skeleton_2/data/complex_0.poly -text svneol=unset#application/octet-stream
Straight_skeleton_2/demo/Straight_skeleton_2/data/complex_1.poly -text svneol=unset#application/octet-stream
Straight_skeleton_2/demo/Straight_skeleton_2/data/complex_2.poly -text svneol=unset#application/octet-stream
@ -4295,7 +4330,7 @@ Triangulation_3/examples/Triangulation_3/info_insert_with_zip_iterator.cpp -text
Triangulation_3/include/CGAL/internal/Static_filters/Compare_weighted_squared_radius_3.h -text
Triangulation_3/include/CGAL/internal/Static_filters/Power_test_3.h -text
Triangulation_3/include/CGAL/internal/Static_filters/Regular_triangulation_static_filters_traits_3.h -text
Triangulation_3/include/CGAL/internal/spatial_sorting_traits_with_indices.h -text
Triangulation_3/include/CGAL/internal/info_check.h -text
Triangulation_3/test/Triangulation_3/include/CGAL/_test_remove_cluster.h -text
Triangulation_3/test/Triangulation_3/test_regular_insert_range_with_info.cpp -text
Triangulation_3/test/Triangulation_3/test_static_filters.cpp -text

View File

@ -402,8 +402,10 @@ void MainWindow::on_actionRefine_loop_triggered()
void MainWindow::on_actionSave_snapshot_triggered()
{
// save snapshot to file
QApplication::setOverrideCursor(Qt::WaitCursor);
m_pViewer->saveSnapshot(QString("snapshot.png"));
QString filename = QFileDialog::getSaveFileName(this,tr("Save snapshot to file..."),"snapshot00.png","*.png");
m_pViewer->saveSnapshot(filename);
QApplication::restoreOverrideCursor();
}
void MainWindow::on_actionCopy_snapshot_triggered()

View File

@ -6,7 +6,7 @@ In the following example a set of 3D triangles is stored in a list. The AABB pri
\ccIncludeExampleCode{AABB_tree/AABB_triangle_3_example.cpp}
\subsection{Tree of Polyhedron Triangle Facets for Intersection Queries}
In the following example the AABB primitive wraps a facet handle of a triangle polyhedral surface as \ccc{id} and the corresponding 3D triangle as geometric object. From a segment query we test the intersections, then compute the number of intersections, compute the first encountered intersection (generally a point), compute all intersections (where each intersection is a pair of one CGAL object and one primitive id - here a face handle) and compute all intersected primitives. The latter involves only tests and no predicates and is hence faster than computing all intersections. We also compute the first encountered intersection with a plane query, which is generally a segment.
In the following example the AABB primitive wraps a facet handle of a triangle polyhedral surface as \ccc{id} and the corresponding 3D triangle as geometric object. From a segment query we test the intersections, then compute the number of intersections, compute the first encountered intersection (generally a point), compute all intersections (where each intersection is a pair of one \cgal\ object and one primitive id - here a face handle) and compute all intersected primitives. The latter involves only tests and no predicates and is hence faster than computing all intersections. We also compute the first encountered intersection with a plane query, which is generally a segment.
\ccIncludeExampleCode{AABB_tree/AABB_polyhedron_facet_intersection_example.cpp}
\subsection{Tree of Polyhedron Triangle Facets for Distance Queries}

View File

@ -115,7 +115,7 @@ The experiments described above are neither exhaustive nor conclusive as we have
\begin{itemize}
\item Kernel: The type of CGAL kernel turns out to dominate the final execution times, the maximum performances being obtained with the simple Cartesian kernel parameterized with the double precision number type. In applications where the intersection and distance execution times are crucial it is possible to use this kernel for the AABB tree in combination with a more robust kernel for the main data structure.
\item Kernel: The type of \cgal\ kernel turns out to dominate the final execution times, the maximum performances being obtained with the simple Cartesian kernel parameterized with the double precision number type. In applications where the intersection and distance execution times are crucial it is possible to use this kernel for the AABB tree in combination with a more robust kernel for the main data structure.
\item Primitives: Although the number of input primitives plays an obvious role in the final performance, their distribution in space is at least equally important in order to obtain a well-balanced AABB tree. Ideally the primitives must be evenly distributed in space and the long primitives spanning the bounding box of the tree root node must be avoided as much as possible. It is often beneficial to split these long primitives into smaller ones before constructing the tree, e.g., through recursive longest edge bisection for triangle surface meshes.

View File

@ -1,6 +1,6 @@
\section{Design and Implementation History}
The package is part of CGAL since release 3.3. Of course the package is based
The package is part of \cgal\ since release 3.3. Of course the package is based
on the former Number type support of CGAL. This goes back to Stefan Schirra and Andreas Fabri. But on the other hand the package is to a large extend influenced
by the experience with the number type support in \exacus~\cite{beh+-eeeafcs-05},
which in the main goes back to

View File

@ -1,5 +1,5 @@
\section{Real Number Types}
Every CGAL \ccc{Kernel} comes with two \emph{real number types}
Every \cgal\ \ccc{Kernel} comes with two \emph{real number types}
(number types embeddable into the real numbers). One of them is a
\ccc{FieldNumberType}, and the other a \ccc{RingNumberType}. The
coordinates of the basic kernel objects (points, vectors, etc.) come

View File

@ -47,12 +47,12 @@ struct Get_max_coefficient{
}
};
template <class NT, class Root>
struct Get_max_coefficient<CGAL::Sqrt_extension<NT, Root> >{
template <class NT, class Root,class ACDE_TAG, class FP_TAG>
struct Get_max_coefficient<CGAL::Sqrt_extension<NT, Root, ACDE_TAG, FP_TAG> >{
typedef Get_max_coefficient<NT> GMC;
typedef typename GMC::result_type result_type;
result_type operator () (const CGAL::Sqrt_extension<NT, Root>& a) {
result_type operator () (const CGAL::Sqrt_extension<NT, Root, ACDE_TAG, FP_TAG>& a) {
GMC gmc;
return std::max(std::max(gmc(a.a0()), gmc(a.a1())), gmc(NT(a.root())));
}

View File

@ -79,7 +79,7 @@ interfaces between layers. Specifically, working with
only one number type allows to optimize some polynomial operations
as well as memory handling. The implementation of these kernels
make heavy use of the \mpfr~\cite{cgal:mt-mpfr} and \mpfi~\cite{cgal:r-mpfi}
libraries, and of their CGAL interfaces, \ccc{Gmpfr} and \ccc{Gmpfi}.
libraries, and of their \cgal\ interfaces, \ccc{Gmpfr} and \ccc{Gmpfi}.
The algebraic numbers (roots of the polynomials) are represented
in the two \rs~kernels by a \ccc{Gmpfi} interval and a pointer to
the polynomial of which they are roots. See \cite{cgal:lpt-wea-09}

View File

@ -39,16 +39,15 @@
#include <CGAL/Interval_traits.h>
#include <CGAL/Bigfloat_interval_traits.h>
#include <CGAL/convert_to_bfi.h>
#include <CGAL/Sqrt_extension_fwd.h>
#include <CGAL/Get_arithmetic_kernel.h>
namespace CGAL {
template <class NT> struct Get_arithmetic_kernel;
// it would be nice to remove the explicit use of Sqrt_extension
// in this file. However, it is much more efficient to convert the root
// only once. see convert_to_bfi
template <class COEFF, class ROOT> class Sqrt_extension;
//template <class COEFF, class ROOT> class Sqrt_extension; //use forward declaration instead
namespace internal {
@ -98,11 +97,11 @@ private:
}
}
template <class COEFF, class ROOT, class OI >
template <class COEFF, class ROOT, class ACDE_TAG, class FP_TAG, class OI >
inline
void
convert_coeffs(
const CGAL::Polynomial< CGAL::Sqrt_extension<COEFF,ROOT> >& poly,
const CGAL::Polynomial< CGAL::Sqrt_extension<COEFF,ROOT,ACDE_TAG,FP_TAG> >& poly,
OI it ) const {
BFI root(0);

View File

@ -45,7 +45,7 @@ isolator<Polynomial_>::operator()(const Polynomial_ &p,unsigned int prec){
CGAL_error_msg(
"isolator not implemented for this type of polynomials");
return std::vector<Gmpfi>();
};
}
template <>
inline std::vector<Gmpfi>
@ -56,7 +56,7 @@ isolator<Polynomial<Gmpz> >::operator()(const Polynomial<Gmpz> &p,
mpz_t *coeffs=(mpz_t*)malloc((degree+1)*sizeof(mpz_t));
mpfi_ptr *intervals_mpfi=(mpfi_ptr*)malloc(degree*sizeof(mpfi_ptr));
std::vector<Gmpfi> intervals;
for(int i=0;i<=degree;++i)
for(unsigned int i=0;i<=degree;++i)
coeffs[i][0]=*(p[i].mpz());
init_solver();
create_rs_upoly(coeffs,degree,rs_get_default_up());
@ -69,7 +69,7 @@ isolator<Polynomial<Gmpz> >::operator()(const Polynomial<Gmpz> &p,
intervals.push_back(Gmpfi(intervals_mpfi[j]));
free(intervals_mpfi);
return intervals;
};
}
} // namespace RS

View File

@ -41,15 +41,19 @@ if ( CGAL_FOUND )
create_single_source_cgal_program( "Algebraic_kernel_d_1_CORE.cpp" )
create_single_source_cgal_program( "Algebraic_kernel_d_1_GMP.cpp" )
create_single_source_cgal_program( "Algebraic_kernel_d_2.cpp" )
create_single_source_cgal_program( "Algebraic_kernel_rs_gmpq_d_1.cpp" )
create_single_source_cgal_program( "Algebraic_kernel_rs_gmpz_d_1.cpp" )
create_single_source_cgal_program( "Algebraic_real_d_1.cpp" )
create_single_source_cgal_program( "Bitstream_descartes.cpp" )
create_single_source_cgal_program( "Curve_analysis_2.cpp" )
create_single_source_cgal_program( "Curve_pair_analysis_2.cpp" )
create_single_source_cgal_program( "Descartes.cpp" )
create_single_source_cgal_program( "Real_embeddable_traits_extension.cpp" )
if(RS_FOUND)
create_single_source_cgal_program( "Algebraic_kernel_rs_gmpq_d_1.cpp" )
create_single_source_cgal_program( "Algebraic_kernel_rs_gmpz_d_1.cpp" )
create_single_source_cgal_program( "rs_isolator.cpp" )
else()
message(STATUS "NOTICE: Some tests require the RS library, and will not be compiled.")
endif()
else()

View File

@ -4,7 +4,7 @@
\begin{ccAdvanced}
As in Curved-kernel, I use the ``Advanced'' environment in this
document to distinguish between my current submission to the CGAL
document to distinguish between my current submission to the \cgal\
editorial board and plans for the future, related to ACS. The
``Advanced'' parts will disappear if/when this is released.
\end{ccAdvanced}
@ -33,10 +33,10 @@ Polynomial-2-2's gives Root-of-4's...)
General remark about the suffix \ccc{_d_v}: \ccc{_d} stands
for the degree of the polynomials and the algebraic numbers, and
\ccc{_v} stands for the number of variables, which is analogous to the
dimension for CGAL geometric objects. I had already mentioned this in an
earlier version of this document (presented at the CGAL meeting at
dimension for \cgal\ geometric objects. I had already mentioned this in an
earlier version of this document (presented at the \cgal\ meeting at
INRIA in march 05), and it is consistent with what Menelaos proposed
later (CGAL meeting in Pisa in june 05) for a hierarchy of algebraic kernels.
later (\cgal\ meeting in Pisa in june 05) for a hierarchy of algebraic kernels.
\end{ccAdvanced}
\subsubsection*{Functors}

View File

@ -26,7 +26,7 @@
#define CGAL_ALGEBRAIC_KERNEL_FOR_CIRCLES_2_2_H
#include <CGAL/Quotient.h>
#include <CGAL/Root_of_2.h>
#include <CGAL/Root_of_traits.h>
#include <CGAL/Polynomials_2_2.h>
#include <CGAL/Polynomials_1_2.h>
#include <CGAL/Root_for_circles_2_2.h>

View File

@ -29,7 +29,7 @@
#ifndef CGAL_ALGEBRAIC_KERNEL_FOR_SPHERES_2_3_H
#define CGAL_ALGEBRAIC_KERNEL_FOR_SPHERES_2_3_H
#include <CGAL/Root_of_2.h>
#include <CGAL/Root_of_traits.h>
#include <CGAL/Polynomials_2_3.h>
#include <CGAL/Polynomials_1_3.h>
#include <CGAL/Polynomials_for_line_3.h>

View File

@ -1407,6 +1407,8 @@ Alpha_shape_2<Dt>::find_alpha_solid() const
// takes O(#alpha_shape) time
Coord_type alpha_solid = 0;
if (number_of_vertices()<3) return alpha_solid;
Finite_vertices_iterator vertex_it;
// only finite vertices
for( vertex_it = finite_vertices_begin();

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
#ifndef CGAL_APOLLONIUS_GRAPH_2_IMPL_H

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
#ifndef CGAL_APOLLONIUS_GRAPH_HIERARCHY_2_IMPL_H
#define CGAL_APOLLONIUS_GRAPH_HIERARCHY_2_IMPL_H

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@tem.uoc.gr>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
// Christophe Delage
// David Millman

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@tem.uoc.gr>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
// Christophe Delage
// David Millman

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@tem.uoc.gr>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
// Christophe Delage <Christophe.Delage@sophia.inria.fr>
// David Millman <dlm336@cs.nyu.edu>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@tem.uoc.gr>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
// Christophe Delage <Christophe.Delage@sophia.inria.fr>
// David Millman <dlm336@cs.nyu.edu>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@tem.uoc.gr>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
// Christophe Delage <Christophe.Delage@sophia.inria.fr>
// David Millman <dlm336@cs.nyu.edu>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@tem.uoc.gr>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
// Christophe Delage <Christophe.Delage@sophia.inria.fr>
// David Millman <dlm336@cs.nyu.edu>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@tem.uoc.gr>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@tem.uoc.gr>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
// Christophe Delage <Christophe.Delage@sophia.inria.fr>
// David Millman <dlm336@cs.nyu.edu>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@tem.uoc.gr>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
// Christophe Delage <Christophe.Delage@sophia.inria.fr>
// David Millman <dlm336@cs.nyu.edu>

View File

@ -1,4 +1,4 @@
// Copyright (c) 2007 Foundation for Research and Technology-Hellas (Greece).
// Copyright (c) 2007 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you may redistribute it under

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -1,4 +1,4 @@
// Copyright (c) 2007 Foundation for Research and Technology-Hellas (Greece).
// Copyright (c) 2007 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you may redistribute it under

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -1,4 +1,4 @@
// Copyright (c) 2007 Foundation for Research and Technology-Hellas (Greece).
// Copyright (c) 2007 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you may redistribute it under

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
#ifndef CGAL_APOLLONIUS_GRAPH_2_BASIC_H
#define CGAL_APOLLONIUS_GRAPH_2_BASIC_H 1

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@tem.uoc.gr>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
// Christophe Delage <Christophe.Delage@sophia.inria.fr>
// David Millman <dlm336@cs.nyu.edu>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
#ifndef CGAL_APOLLONIUS_GRAPH_HIERARCHY_2_H
#define CGAL_APOLLONIUS_GRAPH_HIERARCHY_2_H

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
#ifndef CGAL_APOLLONIUS_GRAPH_HIERARCHY_VERTEX_BASE_2_H
#define CGAL_APOLLONIUS_GRAPH_HIERARCHY_VERTEX_BASE_2_H

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
#ifndef CGAL_APOLLONIUS_GRAPH_TRAITS_2_H
#define CGAL_APOLLONIUS_GRAPH_TRAITS_2_H

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
#ifndef CGAL_APOLLONIUS_GRAPH_VERTEX_BASE_2_H
#define CGAL_APOLLONIUS_GRAPH_VERTEX_BASE_2_H

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
#ifndef CGAL_APOLLONIUS_SITE_2_H
#define CGAL_APOLLONIUS_SITE_2_H

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
#ifndef CGAL_QT_WIDGET_APOLLONIUS_SITE_2_H

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>
#ifndef CGAL_QT_WIDGET_HYPERBOLA_2_H
#define CGAL_QT_WIDGET_HYPERBOLA_2_H

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -15,7 +15,7 @@
// $Id$
//
//
// Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
// Author(s) : Menelaos Karavelas <mkaravel@iacm.forth.gr>

View File

@ -29,20 +29,22 @@
#ifndef CGAL_GMP_ARITHMETIC_KERNEL_H
#define CGAL_GMP_ARITHMETIC_KERNEL_H
#ifdef CGAL_USE_GMP
#include <CGAL/basic.h>
#include <CGAL/Arithmetic_kernel/Arithmetic_kernel_base.h>
#include <CGAL/Get_arithmetic_kernel.h>
#ifdef CGAL_USE_GMP
#ifdef CGAL_USE_MPFI
#define CGAL_HAS_GMP_ARITHMETIC_KERNEL
#include <CGAL/Gmpz.h>
#include <CGAL/Gmpq.h>
#ifdef CGAL_USE_MPFI
#define CGAL_HAS_GMP_ARITHMETIC_KERNEL
#include <CGAL/Gmpfr.h>
#include <CGAL/Gmpfi.h>
#endif //CGAL_USE_MPFI
namespace CGAL {
@ -53,8 +55,10 @@ class GMP_arithmetic_kernel : public internal::Arithmetic_kernel_base {
public:
typedef CGAL::Gmpz Integer;
typedef CGAL::Gmpq Rational;
#ifdef CGAL_USE_MPFI
typedef CGAL::Gmpfr Bigfloat;
typedef CGAL::Gmpfi Bigfloat_interval;
#endif //CGAL_USE_MPFI
};
template <>
@ -65,6 +69,8 @@ template <>
struct Get_arithmetic_kernel<Gmpq>{
typedef GMP_arithmetic_kernel Arithmetic_kernel;
};
#ifdef CGAL_USE_MPFI
template <>
struct Get_arithmetic_kernel<Gmpfr>{
typedef GMP_arithmetic_kernel Arithmetic_kernel;
@ -73,10 +79,11 @@ template <>
struct Get_arithmetic_kernel<Gmpfi>{
typedef GMP_arithmetic_kernel Arithmetic_kernel;
};
#endif //CGAL_USE_MPFI
} //namespace CGAL
#endif //CGAL_USE_MPFI
#endif //CGAL_USE_GMP
#endif // CGAL_ARITHMETIC_KERNEL_H
// EOF

View File

@ -28,7 +28,7 @@
#include <CGAL/basic.h>
namespace CGAL {
template< class NT > struct Get_arithmetic_kernel;
template< class NT > struct Get_arithmetic_kernel{};
} //namespace CGAL
#endif // CGAL_GET_ARITHMETIC_KERNEL_H

View File

@ -0,0 +1,61 @@
// Copyright (c) 2010 GeometryFactory (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; version 2.1 of the License.
// See the file LICENSE.LGPL distributed with CGAL.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
// Author(s) : Sebastien Loriot
//
// ============================================================================
//
// \brief provide class Arithmetic_kernel, a collection of number types.
//
/*! \file CGAL/Arithmetic_kernel.h
* \brief Declarations pertaining to CGAL::Arithmetic_kernel
*/
#ifndef CGAL_MP_FLOAT_ARITHMETIC_KERNEL_H
#define CGAL_MP_FLOAT_ARITHMETIC_KERNEL_H
#include <CGAL/basic.h>
#include <CGAL/Arithmetic_kernel/Arithmetic_kernel_base.h>
#include <CGAL/Get_arithmetic_kernel.h>
#define CGAL_HAS_MP_FLOAT_ARITHMETIC_KERNEL
#include <CGAL/MP_Float.h>
namespace CGAL {
/*! \ingroup CGAL_Arithmetic_kernel
* \brief The MP_Float set of exact number types
*/
class MP_Float_arithmetic_kernel : public internal::Arithmetic_kernel_base {
public:
typedef MP_Float Integer;
typedef CGAL::Quotient<MP_Float> Rational;
typedef MP_Float Bigfloat;
struct Not_implemented{} Bigfloat_interval;
};
template <>
struct Get_arithmetic_kernel<MP_Float> {
typedef MP_Float_arithmetic_kernel Arithmetic_kernel;
};
} //namespace CGAL
#endif // CGAL_ARITHMETIC_KERNEL_H
// EOF

View File

@ -1,166 +0,0 @@
// TODO: add sign to RET
#ifndef CGAL_GMPFR_INTERVAL_TYPE_H
#define CGAL_GMPFR_INTERVAL_TYPE_H
#include <CGAL/basic.h>
#include <CGAL/Gmpfr.h>
#include <boost/numeric/interval.hpp>
#define OP(o,d) Gmpfr r; \
mpfr_ ## o (r.fr(), a.fr(), b.fr(), GMP_RND ## d); \
return r;
namespace CGAL {
namespace internal {
struct Rounding_for_gmpfr {
private: typedef CGAL::Gmpfr T;
public:
Rounding_for_gmpfr(){};
~Rounding_for_gmpfr(){};
T conv_down(const T& a){ // TODO: fix this
return add_down(T(0),a);
};
T conv_up (const T& a){ // TODO: fix this
return add_up(T(0),a);
};
// mathematical operations
T add_down(const T& a, const T& b) {
OP(add,D);
};
T add_up (const T& a, const T& b){
OP(add,U);
};
T sub_down(const T& a, const T& b){
OP(sub,D);
};
T sub_up (const T& a, const T& b){
OP(sub,U);
};
T mul_down(const T& a, const T& b){
OP(mul,D);
};
T mul_up (const T& a, const T& b){
OP(mul,U);
};
T div_down(const T& a, const T& b){
OP(div,D);
};
T div_up (const T& a, const T& b){
OP(div,U);
};
T sqrt_down(const T& a){
T b;
mpfr_sqrt(b.fr(), a.fr(), GMP_RNDD);
return b;
};
T sqrt_up (const T& a){
T b;
mpfr_sqrt(b.fr(), a.fr(), GMP_RNDU);
return b;
};
T median(const T& a, const T& b) {
T result(a + (b-a)/2);
CGAL_postcondition(a <= result);
CGAL_postcondition(result <= b);
return result;
};
T int_down(const T& a) {
T r;
mpfr_floor(r.fr(), a.fr());
return r;
};
T int_up (const T& a) {
T r;
mpfr_ceil(r.fr(), a.fr());
return r;
};
};
class Checking_for_gmpfr {
typedef CGAL::Gmpfr T;
public:
static T pos_inf() {
T b;
mpfr_set_inf(b.fr(), 1);
return b;
}
static T neg_inf() {
T b;
mpfr_set_inf(b.fr(), -1);
return b;
}
static T nan() {
T b;
mpfr_set_nan(b.fr());
return b;
}
static bool is_nan(const T& b) {
return mpfr_nan_p(b.fr());
}
static T empty_lower() {
return T(1);
}
static T empty_upper() {
return T(0);
}
static bool is_empty(const T& a, const T& b) {
// return a==T(1) && b == T(0);
// return false;
return a > b; // TODO: optimize this
}
};
} // namespace internal
} //namespace CGAL
namespace boost {
namespace numeric {
inline
std::ostream& operator <<
(std::ostream& os, const boost::numeric::interval<CGAL::Gmpfr>& x)
{
os << "["
<< x.lower() << ", " << x.upper() << "]";
return os;
}
}//namespace numeric
}//namespace boost
namespace CGAL {
typedef boost::numeric::interval<
Gmpfr,
boost::numeric::interval_lib::policies
< internal::Rounding_for_gmpfr, internal::Checking_for_gmpfr > >
Gmpfr_interval;
// I have to redfine these operators, since the test reports an
// ambiguity with operators in CGAL::Polynomial
// However, it seems that this is due to the use of struct interval_holder
// in the definition of the operators in boost.
inline bool operator == (const Gmpfr_interval& x , const Gmpfr_interval& y)
{return x.operator==(y) ;}
} //namespace CGAL
//#endif // CGAL_USE_LEDA
#undef OP
#endif // CGAL_GMPFR_INTERVAL_TYPE_H

View File

@ -1,336 +0,0 @@
// Copyright (c) 2008 Max-Planck-Institute Saarbruecken (Germany),
// National University of Athens (Greece).
// Copyright (c) 2009 Max-Planck-Institute Saarbruecken (Germany).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; version 2.1 of the License.
// See the file LICENSE.LGPL distributed with CGAL.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
// Author(s) : George Tzoumas <geotz@di.uoa.gr>,
// Michael Hemmer <hemmer@mpi-inf.mpg.de>
//
// ============================================================================
//
// \brief provide CGAL support for class CGAL::Gmpfr_interval.
//
#ifndef CGAL_GMPFR_INTERVAL_H
#define CGAL_GMPFR_INTERVAL_H
#include <CGAL/basic.h>
#include <CGAL/Gmpz.h>
#include <CGAL/Gmpq.h>
#include <CGAL/Gmpfr.h>
#include <CGAL/GMP/Gmpfr_interval_type.h>
#include <CGAL/Interval_traits.h>
#include <CGAL/Bigfloat_interval_traits.h>
namespace CGAL {
template <> class Algebraic_structure_traits< Gmpfr_interval >
: public Algebraic_structure_traits_base < Gmpfr_interval,
Field_with_sqrt_tag >{
public:
typedef Tag_false Is_exact;
typedef Tag_true Is_numerical_sensitive;
class Sqrt
: public std::unary_function< Type, Type > {
public:
Type operator()( const Type& x ) const {
return ::boost::numeric::sqrt(x);
}
};
};
template <> class Real_embeddable_traits< Gmpfr_interval >
: public INTERN_RET::Real_embeddable_traits_base<Gmpfr_interval, CGAL::Tag_true> {
public:
class Abs
: public std::unary_function< Type, Type > {
public:
Type operator()( const Type& x ) const {
return ::boost::numeric::abs(x);
}
};
class To_double
: public std::unary_function< Type, double > {
public:
double operator()( const Type& x ) const {
return ::boost::numeric::median(x).to_double();
}
};
class To_interval
: public std::unary_function< Type, std::pair< double, double > > {
public:
std::pair<double, double> operator()( const Type& x ) const {
std::pair<double, double> lower_I(x.lower().to_interval());
std::pair<double, double> upper_I(x.upper().to_interval());
return std::pair< double, double >(
(CGAL::min)(lower_I.first , upper_I.first ),
(CGAL::max)(lower_I.second, upper_I.second));
}
};
};
template<>
class Interval_traits<Gmpfr_interval>
{
public:
typedef Interval_traits<Gmpfr_interval> Self;
typedef Gmpfr_interval Interval;
typedef CGAL::Gmpfr Bound;
typedef CGAL::Tag_true With_empty_interval;
typedef CGAL::Tag_true Is_interval;
struct Construct :public std::binary_function<Bound,Bound,Interval>{
Interval operator()( const Bound& l,const Bound& r) const {
CGAL_precondition( l < r );
return Interval(l,r);
}
};
struct Lower :public std::unary_function<Interval,Bound>{
Bound operator()( const Interval& a ) const {
return a.lower();
}
};
struct Upper :public std::unary_function<Interval,Bound>{
Bound operator()( const Interval& a ) const {
return a.upper();
}
};
struct Width :public std::unary_function<Interval,Bound>{
Bound operator()( const Interval& a ) const {
return ::boost::numeric::width(a);
}
};
struct Median :public std::unary_function<Interval,Bound>{
Bound operator()( const Interval& a ) const {
return ::boost::numeric::median(a);
}
};
struct Norm :public std::unary_function<Interval,Bound>{
Bound operator()( const Interval& a ) const {
return ::boost::numeric::norm(a);
}
};
struct Empty :public std::unary_function<Interval,bool>{
bool operator()( const Interval& a ) const {
return ::boost::numeric::empty(a);
}
};
struct Singleton :public std::unary_function<Interval,bool>{
bool operator()( const Interval& a ) const {
return ::boost::numeric::singleton(a);
}
};
struct Zero_in :public std::unary_function<Interval,bool>{
bool operator()( const Interval& a ) const {
return ::boost::numeric::in_zero(a);
}
};
struct In :public std::binary_function<Bound,Interval,bool>{
bool operator()( Bound x, const Interval& a ) const {
return ::boost::numeric::in(x,a);
}
};
struct Equal :public std::binary_function<Interval,Interval,bool>{
bool operator()( const Interval& a, const Interval& b ) const {
return ::boost::numeric::equal(a,b);
}
};
struct Overlap :public std::binary_function<Interval,Interval,bool>{
bool operator()( const Interval& a, const Interval& b ) const {
return ::boost::numeric::overlap(a,b);
}
};
struct Subset :public std::binary_function<Interval,Interval,bool>{
bool operator()( const Interval& a, const Interval& b ) const {
return ::boost::numeric::subset(a,b);
}
};
struct Proper_subset :public std::binary_function<Interval,Interval,bool>{
bool operator()( const Interval& a, const Interval& b ) const {
return ::boost::numeric::proper_subset(a,b);
}
};
struct Hull :public std::binary_function<Interval,Interval,Interval>{
Interval operator()( const Interval& a, const Interval& b ) const {
return ::boost::numeric::hull(a,b);
}
};
struct Intersection :public std::binary_function<Interval,Interval,Interval>{
Interval operator()( const Interval& a, const Interval& b ) const {
Interval r = ::boost::numeric::intersect(a,b);
return r;
}
};
};
template<>
class Bigfloat_interval_traits<Gmpfr_interval>:
public Interval_traits<Gmpfr_interval>
{
public:
typedef Gmpfr_interval NT;
typedef CGAL::Gmpfr BF;
struct Get_significant_bits: public std::unary_function<NT,long>{
long operator()( NT x) const {
if(CGAL::zero_in(x)) return -1;
BF labs = CGAL::lower(CGAL::abs(x)) ;
BF w = CGAL::width(x);
BF err;
mpfr_div(err.fr(), w.fr(), labs.fr(), GMP_RNDU);
mpfr_log2(err.fr(), err.fr(), GMP_RNDD);
return -mpfr_get_si(err.fr(), GMP_RNDU);
}
};
struct Set_precision {
// type for the \c AdaptableUnaryFunction concept.
typedef long argument_type;
// type for the \c AdaptableUnaryFunction concept.
typedef long result_type;
long operator()( long prec ) const {
long old_prec = mpfr_get_default_prec();
// std::cerr << "precision set to " << prec << " from " << old_prec << std::endl;
mpfr_set_default_prec(prec);
return old_prec;
}
};
struct Get_precision {
// type for the \c AdaptableGenerator concept.
typedef long result_type;
long operator()() const {
return mpfr_get_default_prec();
}
};
};
//Gmp internal coercions:
CGAL_DEFINE_COERCION_TRAITS_FOR_SELF(Gmpfr_interval)
// The following definitions reflect the interaction of the Gmpfr
// built in types :
CGAL_DEFINE_COERCION_TRAITS_FROM_TO(short ,Gmpfr_interval)
CGAL_DEFINE_COERCION_TRAITS_FROM_TO(int ,Gmpfr_interval)
CGAL_DEFINE_COERCION_TRAITS_FROM_TO(long ,Gmpfr_interval)
CGAL_DEFINE_COERCION_TRAITS_FROM_TO(float ,Gmpfr_interval)
CGAL_DEFINE_COERCION_TRAITS_FROM_TO(double ,Gmpfr_interval)
template <>
struct Coercion_traits<CGAL::Gmpfr_interval, CGAL::Gmpz>{
typedef Tag_true Are_explicit_interoperable;
typedef Tag_false Are_implicit_interoperable;
typedef CGAL::Gmpfr_interval Type;
struct Cast{
typedef Type result_type;
Type operator()(const CGAL::Gmpfr_interval& x) const { return x;}
Type operator()(const CGAL::Gmpz x) const {
CGAL::Gmpfr lower, upper;
mpfr_set_z (lower.fr(), x.mpz(), GMP_RNDD);
mpfr_set_z (upper.fr(), x.mpz(), GMP_RNDU);
Type bfi(lower, upper);
CGAL_postcondition( bfi.lower() <= x );
CGAL_postcondition( bfi.upper() >= x );
return bfi;
}
};
};
template <> // mirror
struct Coercion_traits<CGAL::Gmpz,CGAL::Gmpfr_interval>
:public Coercion_traits<CGAL::Gmpfr_interval, CGAL::Gmpz>{};
template <>
struct Coercion_traits<CGAL::Gmpfr_interval, CGAL::Gmpq>{
typedef Tag_true Are_explicit_interoperable;
typedef Tag_false Are_implicit_interoperable;
typedef CGAL::Gmpfr_interval Type;
typedef Coercion_traits<CGAL::Gmpfr_interval, CGAL::Gmpz> CTZ;
struct Cast{
typedef Type result_type;
Type operator()(const CGAL::Gmpfr_interval& x) const { return x;}
Type operator()(const CGAL::Gmpq x) const {
// early exits
if (CGAL::is_zero(x)) return Type(0,0);
if (CGAL::is_one(x.denominator())){
return CTZ::Cast()(x.numerator());
}
// TODO: ensure that prec is reached for resulting interval ?
Gmpfr lower, upper, nf, df;
CGAL::Gmpz num = x.numerator();
CGAL::Gmpz den = x.denominator();
mp_prec_t prec = mpfr_get_default_prec();
CGAL_assertion( mpfr_get_prec(lower.fr()) == prec);
CGAL_assertion( mpfr_get_prec(upper.fr()) == prec );
mpfr_set_z (nf.fr(), num.mpz(), GMP_RNDD);
mpfr_set_z (df.fr(), den.mpz(),
(CGAL::sign(num) == CGAL::NEGATIVE)? GMP_RNDD: GMP_RNDU);
mpfr_div(lower.fr(), nf.fr(), df.fr(), GMP_RNDD);
mpfr_set_z (nf.fr(), num.mpz(), GMP_RNDU);
mpfr_set_z (df.fr(), den.mpz(),
(CGAL::sign(num) == CGAL::NEGATIVE)? GMP_RNDU: GMP_RNDD);
mpfr_div(upper.fr(), nf.fr(), df.fr(), GMP_RNDU);
Type bfi(lower, upper);
CGAL_postcondition( bfi.lower() <= x );
CGAL_postcondition( bfi.upper() >= x );
return bfi;
}
};
};
template <> // mirror
struct Coercion_traits<CGAL::Gmpq,CGAL::Gmpfr_interval>
:public Coercion_traits<CGAL::Gmpfr_interval, CGAL::Gmpq>{};
// lower GMP types:
CGAL_DEFINE_COERCION_TRAITS_FROM_TO(Gmpfr,Gmpfr_interval)
} //namespace CGAL
#endif // CGAL_GMPFR_INTERVAL_H

View File

@ -29,81 +29,20 @@ and segments to have rational coordinates.
The nested \ccc{Point_2} type defined by the traits class is therefore
{\em different} than the \ccc{Kernel::Point_2} type. Its coordinates are
of type \ccc{CoordNT}, and represent real numbers obtained from solving
quadratic equations with rational coordinates. A number of type
\ccc{CoordNT} can therefore be expressed as $\alpha + \beta\sqrt{\gamma}$,
where $\alpha$, $\beta$ and $\gamma$ are all rational numbers.
The definition of the curve and $x$-monotone curve types nested in the
traits class are detailed below.
of type \ccc{CoordNT}, which an instantiation of
\ccc{CGAL::Sqrt_extension<NT,ROOT>} where \ccc{NT = ROOT = Kernel::FT}.
Moreover, the third and fourth (hidden) template parameters of
\ccc{CGAL::Sqrt_extension<NT,ROOT>} are set to \ccc{CGAL::Tag_true}, which
enables efficient comparison among different extensions.
For more details see the documentation of \ccRefIdfierPage{CGAL::Sqrt_extension<NT,ROOT>}\\
\ccInclude{CGAL/Arr_circle_segment_traits_2.h}
\ccIsModel
\ccc{ArrangementTraits_2}
\subsection*{Class
Arr\_circle\_segment\_traits\_2$<$Kernel$>$::CoordNT}
%==============================================================================
The \ccc{CoordNT} number-type nested within the traits class represents
an algebraic number of degree 2; it can be represented as
$\alpha + \beta\sqrt{\gamma}$, where $\alpha$, $\beta$ and $\gamma$ are
all rational numbers of type \ccc{Kernel::FT}.
\begin{ccClass}{Arr_circle_segment_traits_2<Kernel>::CoordNT}
\ccTypes
%-------
\ccNestedType{Rational}{the \ccc{Kernel::FT} type.}
\ccCreation
\ccCreationVariable{x}
%---------------------
\ccConstructor{CoordNT ();}
{creates a variable whose value is $0$.}
\ccConstructor{CoordNT (const Rational& alpha);}
{creates a variable whose value is the rational number $\alpha$.}
\ccConstructor{CoordNT (const Rational& alpha,
const Rational& beta,
const Rational& gamma);}
{creates a variable whose value is the algebraic number
$\alpha + \beta\sqrt{\gamma}$.}
\ccAccessFunctions
%-----------------
\ccMethod{bool is_rational () const;}
{determines whether \ccVar\ is rational.}
\ccMethod{Rational alpha () const;}
{returns $\alpha$.}
\ccGlue
\ccMethod{Rational beta () const;}
{returns $\beta$ (0 if \ccVar\ is rational).}
\ccGlue
\ccMethod{Rational gamma () const;}
{returns $\gamma$ (0 if \ccVar\ is rational).}
\ccHeading{Operators}
%--------------------
The \ccc{CoordNT} number-type supports all arithmetic operations with
rational numbers of type \ccc{Kernel::FT}. For example, it is possible to
compute \ccc{x + q}, \ccc{q - x}, \ccc{x += q}, etc. where \ccc{q} is rational.
The global functions \ccc{CGAL::sign(x)}, \ccc{CGAL::square(x)},
\ccc{CGAL::to_double(x)} and \ccc{CGAL::compare(x,y)}, where \ccc{x} and
\ccc{y} are of type \ccc{CoordNT}, are also supported.
It is also possible to call \ccc{CGAL::to_double(x)} to convert \ccc{x} to
a rational number, with the precondition that it is indeed rational.
\end{ccClass}
\subsection*{Class
Arr\_circle\_segment\_traits\_2$<$Kernel$>$::Point\_2}
%==============================================================================

View File

@ -4,3 +4,4 @@ include/CGAL/Arr_great_circular_arc_on_cylinder_traits_2.h
include/CGAL/Arr_polycurve_traits_2.h
include/CGAL/Arr_geometry_traits/Polycurve_2.h
demo/Arr_algebraic_segment_traits_2
include/CGAL/Arr_geometry_traits/One_root_number.h

View File

@ -63,7 +63,7 @@ int main ()
// (-1/2, sqrt(3)/2) to (1/2, sqrt(3)/2). Note that we orient the
// supporting circle accordingly.
Kernel::Point_2 c6 = Kernel::Point_2 (0, 0);
CoordNT sqrt_3_div_2 = CoordNT (0, Number_type(1,2), 3);
CoordNT sqrt_3_div_2 = CoordNT (Number_type(0), Number_type(1,2), Number_type(3));
Point_2 s6 = Point_2 (Number_type (-1, 2), sqrt_3_div_2);
Point_2 t6 = Point_2 (Number_type (1, 2), sqrt_3_div_2);

View File

@ -24,7 +24,7 @@
/*! \file
* Header file for the _Circle_segment_2<Kernel, Filter> class.
*/
#include <CGAL/Arr_geometry_traits/One_root_number.h>
#include <CGAL/Sqrt_extension.h>
#include <CGAL/Bbox_2.h>
#include <CGAL/Handle_for.h>
#include <list>
@ -48,7 +48,7 @@ public:
typedef NumberType_ NT;
typedef _One_root_point_2_rep<NT, Filter_> Self;
typedef _One_root_number<NT, Filter_> CoordNT;
typedef Sqrt_extension<NT,NT,Tag_true,Boolean_tag<Filter_> > CoordNT;
private:
@ -63,13 +63,9 @@ public:
_y (0)
{}
/*! Constructor of a point with rational coefficients. */
_One_root_point_2_rep (const NT& x, const NT& y) :
_x (x),
_y (y)
{}
/*! Constructor of a point with one-root coefficients. */
/*! Constructor of a point with one-root coefficients.
This constructor of a point can also be used with rational coefficients
thanks to convertor of CoordNT. */
_One_root_point_2_rep (const CoordNT& x, const CoordNT& y) :
_x (x),
_y (y)
@ -107,12 +103,9 @@ public:
Point_handle (p)
{}
/*! Constructor of a point with rational coefficients. */
_One_root_point_2 (const NT& x, const NT& y) :
Point_handle (Point_rep (x, y))
{}
/*! Constructor of a point with one-root coefficients. */
/*! Constructor of a point with one-root coefficients.
This constructor of a point can also be used with rational coefficients
thanks to convertor of CoordNT. */
_One_root_point_2 (const CoordNT& x, const CoordNT& y) :
Point_handle (Point_rep (x, y))
{}
@ -556,8 +549,8 @@ public:
else
{
// In case only the squared root is given:
xv_left = CoordNT (x0, -1, _circ.squared_radius());
xv_right = CoordNT (x0, 1, _circ.squared_radius());
xv_left = CoordNT (x0, NT(-1), _circ.squared_radius());
xv_right = CoordNT (x0, NT(1), _circ.squared_radius());
}
vpts[0] = Point_2 (xv_left, y0);
@ -634,7 +627,7 @@ private:
if (_has_radius)
vpts[n_vpts] = Point_2 (CoordNT (x0 - _radius), y0);
else
vpts[n_vpts] = Point_2 (CoordNT (x0, -1, _circ.squared_radius()),
vpts[n_vpts] = Point_2 (CoordNT (x0, NT(-1), _circ.squared_radius()),
y0);
n_vpts++;
@ -649,7 +642,7 @@ private:
if (_has_radius)
vpts[n_vpts] = Point_2 (CoordNT (x0 + _radius), y0);
else
vpts[n_vpts] = Point_2 (CoordNT (x0, 1, _circ.squared_radius()),
vpts[n_vpts] = Point_2 (CoordNT (x0, NT(1), _circ.squared_radius()),
y0);
n_vpts++;
}
@ -2071,11 +2064,11 @@ protected:
mult = 1;
p = Point_2 (CoordNT (vx),
CoordNT (y0(), -1, vdisc));
CoordNT (y0(), NT(-1), vdisc));
inter_list.push_back (Intersection_point_2 (p, mult));
p = Point_2 (CoordNT (vx),
CoordNT (y0(), 1, vdisc));
CoordNT (y0(), NT(1), vdisc));
inter_list.push_back (Intersection_point_2 (p, mult));
return;
@ -2108,11 +2101,11 @@ protected:
// Compute the two intersection points:
mult = 1;
p = Point_2 (CoordNT (x0(), -1, hdisc),
p = Point_2 (CoordNT (x0(), NT(-1), hdisc),
CoordNT (hy));
inter_list.push_back (Intersection_point_2 (p, mult));
p = Point_2 (CoordNT (x0(), 1, hdisc),
p = Point_2 (CoordNT (x0(), NT(1), hdisc),
CoordNT (hy));
inter_list.push_back (Intersection_point_2 (p, mult));

View File

@ -23,7 +23,6 @@
/*! \file
* Header file for the _Hyperbolic_arc_2<Kernel, Filter> class.
*/
#include <CGAL/Arr_traits_2/One_root_number.h>
#include <CGAL/Arr_traits_2/Circle_segment_2.h>
#include <CGAL/Bbox_2.h>
#include <CGAL/Handle_for.h>

View File

@ -153,9 +153,9 @@ struct Curve_renderer_traits_base
struct Rat_to_float {
typedef Float result_type;
template <class X, class Y>
Float operator()(const Sqrt_extension<X, Y>& x) const {
typename CGAL::Coercion_traits<Sqrt_extension<X, Y>, Float>::Cast
template <class X, class Y,class ACDE_TAG,class FP_TAG>
Float operator()(const Sqrt_extension<X, Y, ACDE_TAG, FP_TAG>& x) const {
typename CGAL::Coercion_traits<Sqrt_extension<X, Y, ACDE_TAG, FP_TAG>, Float>::Cast
cast;
return cast(x);
}
@ -502,9 +502,9 @@ struct Curve_renderer_traits<leda::bigfloat, class leda::rational>
struct Rat_to_float {
typedef Float result_type;
template <class X, class Y>
Float operator()(const Sqrt_extension<X, Y>& x) const {
typename CGAL::Coercion_traits<Sqrt_extension<X, Y>, Float>::Cast
template <class X, class Y,class ACDE_TAG,class FP_TAG>
Float operator()(const Sqrt_extension<X, Y, ACDE_TAG, FP_TAG>& x) const {
typename CGAL::Coercion_traits<Sqrt_extension<X, Y, ACDE_TAG, FP_TAG>, Float>::Cast
cast;
return cast(x);
}

View File

@ -1,8 +1,8 @@
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 0 1 1
c 0 0 1 1 1 0 1 1 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 0 1 -1
c 0 0 1 1 1 0 1 -1 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[1,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[-1,0,0] EXT[1,0,0] EXT[0,0,0]
b 0 0 1 1 1/2 0 1/4 1 0 0 1/2 1/4 1 0
b 0 0 1 1 0 1/2 1/4 1 0 -1/2 0 1/4 1 0
b 0 0 1 1 -1/2 0 1/4 1 0 0 -1/2 1/4 1 0

View File

@ -1,15 +1,15 @@
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 1/2 1 1/2 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 1/2 1 1/2
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 1/2 1 -1/2
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]

View File

@ -1,28 +1,28 @@
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 0 1 1
c 0 0 1 1 1 0 1 1 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 0 1 -1
c 0 0 1 1 1 0 1 -1 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[1,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[-1,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 1/2 1 1/2
c 1/2 0 1/4 1 1 1/2 1 1/2 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1/2 1 -1/2
c 1/2 0 1/4 1 1 1/2 1 -1/2 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 -1/2 1 -1/2
c -1/2 0 1/4 1 1 -1/2 1 -1/2 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1/2 1 1/2
c -1/2 0 1/4 1 1 -1/2 1 1/2 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 0 1 1 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 0 1 0
c 0 1/2 1/4 1 1 0 1 0 1 1/2 1 1/2
c 0 1/2 1/4 1 1 1/2 1 1/2 1 0 1 1
c 0 1/2 1/4 1 EXT[0,0,0] EXT[1,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[1,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 0 1 -1 1 1/2 1 -1/2
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 0 1 0
c 0 -1/2 1/4 1 1 0 1 0 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 0 1 -1
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[-1,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[-1,0,0]
# x^2+y^2=1
a 0 0 1 1
# (x-1/2)^2+y^2=1/4

View File

@ -1,40 +1,40 @@
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 0 1 1
c 0 0 1 1 1 0 1 1 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 0 1 -1
c 0 0 1 1 1 0 1 -1 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[1,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[-1,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 1/2 1 1/2
c 1/2 0 1/4 1 1 1/2 1 1/2 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1/2 1 -1/2
c 1/2 0 1/4 1 1 1/2 1 -1/2 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 -1/2 1 -1/2
c -1/2 0 1/4 1 1 -1/2 1 -1/2 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1/2 1 1/2
c -1/2 0 1/4 1 1 -1/2 1 1/2 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 0 1 1 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 0 1 0
c 0 1/2 1/4 1 1 0 1 0 1 1/2 1 1/2
c 0 1/2 1/4 1 1 1/2 1 1/2 1 0 1 1
c 0 1/2 1/4 1 EXT[0,0,0] EXT[1,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[1,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 0 1 -1 1 1/2 1 -1/2
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 0 1 0
c 0 -1/2 1/4 1 1 0 1 0 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 0 1 -1
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[-1,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[-1,0,0]
# x^2+y^2=1
c 0 0 1 1 1 -1 1 0 1 1 1 0
c 0 0 1 1 1 1 1 0 1 -1 1 0
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 0 1 0 1 1 1 0
c 1/2 0 1/4 1 1 1 1 0 1 0 1 0
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 1/2 1 1/2
c 0 1/2 1/4 1 1 1/2 1 1/2 1 -1/2 1 1/2
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 1/2 1 -1/2
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]

View File

@ -1,40 +1,40 @@
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 0 1 1
c 0 0 1 1 1 0 1 1 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 0 1 -1
c 0 0 1 1 1 0 1 -1 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[1,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[-1,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 1/2 1 1/2
c 1/2 0 1/4 1 1 1/2 1 1/2 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1/2 1 -1/2
c 1/2 0 1/4 1 1 1/2 1 -1/2 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 -1/2 1 -1/2
c -1/2 0 1/4 1 1 -1/2 1 -1/2 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1/2 1 1/2
c -1/2 0 1/4 1 1 -1/2 1 1/2 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 0 1 1 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 0 1 0
c 0 1/2 1/4 1 1 0 1 0 1 1/2 1 1/2
c 0 1/2 1/4 1 1 1/2 1 1/2 1 0 1 1
c 0 1/2 1/4 1 EXT[0,0,0] EXT[1,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[1,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 0 1 -1 1 1/2 1 -1/2
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 0 1 0
c 0 -1/2 1/4 1 1 0 1 0 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 0 1 -1
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[-1,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[-1,0,0]
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 1/2 1 1/2 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 1/2 1 1/2
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 1/2 1 -1/2
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]

View File

@ -1,25 +1,25 @@
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 0 1 1
c 0 0 1 1 1 0 1 1 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 0 1 -1
c 0 0 1 1 1 0 1 -1 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[1,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[-1,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 1/2 1 1/2
c 1/2 0 1/4 1 1 1/2 1 1/2 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1/2 1 -1/2
c 1/2 0 1/4 1 1 1/2 1 -1/2 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 -1/2 1 -1/2
c -1/2 0 1/4 1 1 -1/2 1 -1/2 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1/2 1 1/2
c -1/2 0 1/4 1 1 -1/2 1 1/2 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 0 1 1 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 0 1 0
c 0 1/2 1/4 1 1 0 1 0 1 1/2 1 1/2
c 0 1/2 1/4 1 1 1/2 1 1/2 1 0 1 1
c 0 1/2 1/4 1 EXT[0,0,0] EXT[1,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[1,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 0 1 -1 1 1/2 1 -1/2
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 0 1 0
c 0 -1/2 1/4 1 1 0 1 0 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 0 1 -1
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[-1,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[-1,0,0]

View File

@ -1,18 +1,18 @@
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 1/2 1 1/2 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 1/2 1 1/2
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 1/2 1 -1/2
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
l 0 0 2 2
l 2 0 0 2
l 0 0 2 0

View File

@ -1,36 +1,36 @@
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 0 1 1
c 0 0 1 1 1 0 1 1 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 0 1 -1
c 0 0 1 1 1 0 1 -1 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[1,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[-1,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 1/2 1 1/2
c 1/2 0 1/4 1 1 1/2 1 1/2 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1/2 1 -1/2
c 1/2 0 1/4 1 1 1/2 1 -1/2 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 -1/2 1 -1/2
c -1/2 0 1/4 1 1 -1/2 1 -1/2 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1/2 1 1/2
c -1/2 0 1/4 1 1 -1/2 1 1/2 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 0 1 1 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 0 1 0
c 0 1/2 1/4 1 1 0 1 0 1 1/2 1 1/2
c 0 1/2 1/4 1 1 1/2 1 1/2 1 0 1 1
c 0 1/2 1/4 1 EXT[0,0,0] EXT[1,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[1,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 0 1 -1 1 1/2 1 -1/2
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 0 1 0
c 0 -1/2 1/4 1 1 0 1 0 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 0 1 -1
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[-1,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[-1,0,0]
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 1/2 1 1/2 1 1/2 1 1/2
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 1/2 1 -1/2
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
l 0 0 1 1

View File

@ -1,41 +1,41 @@
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 0 1 1
c 0 0 1 1 1 0 1 1 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 0 1 -1
c 0 0 1 1 1 0 1 -1 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[1,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[-1,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 1/2 1 1/2
c 1/2 0 1/4 1 1 1/2 1 1/2 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1/2 1 -1/2
c 1/2 0 1/4 1 1 1/2 1 -1/2 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 -1/2 1 -1/2
c -1/2 0 1/4 1 1 -1/2 1 -1/2 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1/2 1 1/2
c -1/2 0 1/4 1 1 -1/2 1 1/2 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 0 1 1 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 0 1 0
c 0 1/2 1/4 1 1 0 1 0 1 1/2 1 1/2
c 0 1/2 1/4 1 1 1/2 1 1/2 1 0 1 1
c 0 1/2 1/4 1 EXT[0,0,0] EXT[1,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[1,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 0 1 -1 1 1/2 1 -1/2
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 0 1 0
c 0 -1/2 1/4 1 1 0 1 0 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 0 1 -1
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[-1,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[-1,0,0]
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 1/2 1 1/2 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 1/2 1 1/2
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 1/2 1 -1/2
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
l 0 0 1 1

View File

@ -1,43 +1,43 @@
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 0 1 1
c 0 0 1 1 1 0 1 1 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 0 1 -1
c 0 0 1 1 1 0 1 -1 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[1,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[-1,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 1/2 1 1/2
c 1/2 0 1/4 1 1 1/2 1 1/2 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1/2 1 -1/2
c 1/2 0 1/4 1 1 1/2 1 -1/2 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 -1/2 1 -1/2
c -1/2 0 1/4 1 1 -1/2 1 -1/2 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1/2 1 1/2
c -1/2 0 1/4 1 1 -1/2 1 1/2 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 0 1 1 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 0 1 0
c 0 1/2 1/4 1 1 0 1 0 1 1/2 1 1/2
c 0 1/2 1/4 1 1 1/2 1 1/2 1 0 1 1
c 0 1/2 1/4 1 EXT[0,0,0] EXT[1,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[1,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 0 1 -1 1 1/2 1 -1/2
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 0 1 0
c 0 -1/2 1/4 1 1 0 1 0 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 0 1 -1
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[-1,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[-1,0,0]
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 1/2 1 1/2 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 1/2 1 1/2
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 1/2 1 -1/2
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
l 0 0 2 0
l 0 0 1 0
l 1 0 2 0

View File

@ -92,27 +92,27 @@ l 1 1 1 0
# circles
#
# x^2+y^2=1
c 0 0 1 1 1 1 1 0 1 0 1 1
c 0 0 1 1 1 0 1 1 1 -1 1 0
c 0 0 1 1 1 -1 1 0 1 0 1 -1
c 0 0 1 1 1 0 1 -1 1 1 1 0
c 0 0 1 1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[1,0,0] EXT[-1,0,0] EXT[0,0,0]
c 0 0 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0]
c 0 0 1 1 EXT[0,0,0] EXT[-1,0,0] EXT[1,0,0] EXT[0,0,0]
# (x-1/2)^2+y^2=1/4
c 1/2 0 1/4 1 1 1 1 0 1 1/2 1 1/2
c 1/2 0 1/4 1 1 1/2 1 1/2 1 0 1 0
c 1/2 0 1/4 1 1 0 1 0 1 1/2 1 -1/2
c 1/2 0 1/4 1 1 1/2 1 -1/2 1 1 1 0
c 1/2 0 1/4 1 EXT[1,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 1/2 0 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[1,0,0] EXT[0,0,0]
# (x+1/2)^2+y^2=1/4
c -1/2 0 1/4 1 1 -1 1 0 1 -1/2 1 -1/2
c -1/2 0 1/4 1 1 -1/2 1 -1/2 1 0 1 0
c -1/2 0 1/4 1 1 0 1 0 1 -1/2 1 1/2
c -1/2 0 1/4 1 1 -1/2 1 1/2 1 -1 1 0
c -1/2 0 1/4 1 EXT[-1,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c -1/2 0 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c -1/2 0 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[-1,0,0] EXT[0,0,0]
# (y-1/2)^2+x^2=1/4
c 0 1/2 1/4 1 1 0 1 1 1 -1/2 1 1/2
c 0 1/2 1/4 1 1 -1/2 1 1/2 1 0 1 0
c 0 1/2 1/4 1 1 0 1 0 1 1/2 1 1/2
c 0 1/2 1/4 1 1 1/2 1 1/2 1 0 1 1
c 0 1/2 1/4 1 EXT[0,0,0] EXT[1,0,0] EXT[-1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[-1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[1/2,0,0] EXT[1/2,0,0]
c 0 1/2 1/4 1 EXT[1/2,0,0] EXT[1/2,0,0] EXT[0,0,0] EXT[1,0,0]
# (y+1/2)^2+x^2=1/4
c 0 -1/2 1/4 1 1 0 1 -1 1 1/2 1 -1/2
c 0 -1/2 1/4 1 1 1/2 1 -1/2 1 0 1 0
c 0 -1/2 1/4 1 1 0 1 0 1 -1/2 1 -1/2
c 0 -1/2 1/4 1 1 -1/2 1 -1/2 1 0 1 -1
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[-1,0,0] EXT[1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[0,0,0]
c 0 -1/2 1/4 1 EXT[0,0,0] EXT[0,0,0] EXT[-1/2,0,0] EXT[-1/2,0,0]
c 0 -1/2 1/4 1 EXT[-1/2,0,0] EXT[-1/2,0,0] EXT[0,0,0] EXT[-1,0,0]

View File

@ -3,10 +3,10 @@ w 1 0 0 1
w 0 1 -1 0
w -1 0 0 -1
w 0 -1 1 0
x 1 1 -1 1 1 1 0 1 0 1 1
x -1 1 -1 1 0 1 1 1 -1 1 0
x 1 1 1 1 -1 1 0 1 0 1 -1
x -1 1 1 1 0 1 -1 1 1 1 0
x 1 1 -1 EXT[1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[1,0,0]
x -1 1 -1 EXT[0,0,0] EXT[1,0,0] EXT[-1,0,0] EXT[0,0,0]
x 1 1 1 EXT[-1,0,0] EXT[0,0,0] EXT[0,0,0] EXT[-1,0,0]
x -1 1 1 EXT[0,0,0] EXT[-1,0,0] EXT[1,0,0] EXT[0,0,0]
y 1 1 -1 1 0 -1 0 1 -1
y -1 1 -1 0 1 -1 1 0 1
y 1 1 1 1 0 1 0 1 1

Some files were not shown because too many files have changed in this diff Show More