paysages3d/src/basics/Disk.h
Michaël Lemaire 9a096ec329 Merge branch 'master' into vegetation
Conflicts:
	src/basics/Disk.cpp
	src/basics/Disk.h
	src/basics/SpaceSegment.cpp
	src/definition/DefinitionNode.cpp
	src/definition/DefinitionNode.h
	src/definition/Scenery.cpp
	src/definition/Scenery.h
	src/definition/SurfaceMaterial.cpp
	src/definition/SurfaceMaterial.h
	src/definition/TextureLayerDefinition.cpp
	src/definition/definition_global.h
	src/interface/commandline/tests.cpp
	src/render/opengl/OpenGLRenderer.cpp
	src/render/software/SoftwareCanvasRenderer.cpp
	src/render/software/SoftwareCanvasRenderer.h
	src/render/software/SoftwareRenderer.h
	src/render/software/TerrainRasterizer.cpp
	src/render/software/TerrainRasterizer.h
	src/render/software/TerrainRenderer.h
	src/render/software/software_global.h
2015-11-09 22:38:00 +01:00

43 lines
885 B
C++

#ifndef DISK_H
#define DISK_H
#include "basics_global.h"
#include "InfinitePlane.h"
namespace paysages {
namespace basics {
/**
* Geometric plane disk.
*/
class BASICSSHARED_EXPORT Disk : public InfinitePlane {
public:
Disk() = default;
Disk(const Vector3 &point, const Vector3 &normal, double radius);
inline double getRadius() const {
return radius;
}
/**
* Check the intersection between the disk and an infinite ray.
*
* Returns the number of intersections (0, 1), and fill the intersection point.
*
* Returns -1 if the ray shares a segment with the disk.
*/
int checkRayIntersection(const InfiniteRay &ray, Vector3 *intersection) const;
void save(PackStream *stream) const override;
void load(PackStream *stream) override;
private:
double radius;
double radius2;
};
}
}
#endif // DISK_H