C# 클래스 AutoStereogramDemo.AutoStereogramBuilder

파일 보기 프로젝트 열기: Domanser/AutoStereogramDemo 1 사용 예제들

공개 메소드들

메소드 설명
AddCylinder ( Point3D p1, Point3D p2, double radius ) : void
AddHorizontalPlane ( double z, CheckPoint checkPoint = null ) : void
AddHorizontalPlane ( double x1, double x2, double y1, double y2, double z, CheckPoint checkPoint = null ) : void
AddModelByDepthMap ( Bitmap image, Point3D origin, Vector3D xVec, Vector3D yVec, Vector3D zVec, double xSize, double ySize, double zSize, bool whiteIsBackground = true ) : void
AddPlane ( double x1, double x2, double y1, double y2, double z1, double z2, double a, double b, double c, double d, CheckPoint checkPoint = null ) : void
AddPlane ( double x1, double x2, double y1, double y2, double z1, double z2, double a, double b, double c, double x0, double y0, double z0, CheckPoint checkPoint = null ) : void
AddPolygon ( Point3D points ) : void
AddRayTracedObject ( Point3D points, GetRayIntersection getRayIntersection ) : void
AddRayTracedObject ( Rectangle2D leftProjBoundaries, Rectangle2D rightProjBoundaries, GetRayIntersection getRayIntersection ) : void

calculate intersections of some figure with rays from eyes through each pixel

AddRayTracedObject ( double x1, double x2, double y1, double y2, double z1, double z2, GetRayIntersection getRayIntersection ) : void
AddSphere ( double xCenter, double yCenter, double zCenter, double radius ) : void
AddSurface ( SurfaceFunc func, double zFarthest, double zClosest ) : void
AddSurface ( SurfaceFunc func, double x1, double x2, double y1, double y2, double zClosest ) : void

create figure using surface function

AddTriangle ( double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3 ) : void
AutoStereogramBuilder ( int xResolution, int yResolution, int subpixelsCount = 1, double pixelWidth = 0.0003, double pixelHeight = 0.0003, double distanceToEyes = 0.5, double distanceBetweenEyes = 0.065 ) : System
Clear ( ) : void
GenerateBitmap ( Bitmap backgroundImage ) : Bitmap
GenerateBitmap ( ColorGenerator colorGenerator = null ) : Bitmap
GetAdditionalHeight ( double z ) : double

Height + GetAdditionalHeight(z) * 2 = height of visible area on range Z from the screen

GetAdditionalWidth ( double z ) : double

Width + GetAdditionalWidth(z) * 2 = width of visible area on range Z from the screen

GetConvexHullProjBoundaries ( Point3D points, bool isLeft ) : Rectangle2D

비공개 메소드들

메소드 설명
AdjustNearest ( int xLeftProj, int xRightProj, int yProj ) : void

update coordinate of nearest point, which visible through given projection on the screen

DefaultColorGenerator ( Bitmap bitmap, int y, int uniqueColorsCount, int colors ) : void
DivideCell ( SurfaceRenderStackFrame stackFrames, SurfaceFunc func ) : void

calculate point projection for some cell and, if required, divide that cell on subcells and repeat procedure for them

GetCylinderRayIntersection ( Point3D p1, Point3D p2, double radius, int xProj, int yProj, double eyeXPos, double &x, double &z ) : bool
GetEyeXPos ( bool isLeft ) : double
GetPlaneRayIntersection ( int xProj, int yProj, double eyeXPos, double a, double b, double c, double d, double &x, double &z, CheckPoint checkPoint ) : bool
GetSphereRayIntersection ( double xCenter, double yCenter, double zCenter, double radius, int xProj, int yProj, double eyeXPos, double &x, double &z ) : bool
GetXProj ( double x, double z, bool isLeft ) : int

x coordinate of point projection on the screen

GetYProj ( double y, double z ) : int

y coordinate of point projection on the screen

InitPoint ( SurfacePoint &point, double x, double y, double z ) : void
IsDivisionRequired ( SurfaceRenderStackFrame stackFrame, SurfaceFunc func ) : bool
IsDivisionRequired ( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 ) : bool
SampleImageColorGenerator ( Bitmap bitmap, Bitmap backgroundImage, int y, int uniqueColorsCount, int colors ) : void

메소드 상세

AddCylinder() 공개 메소드

public AddCylinder ( Point3D p1, Point3D p2, double radius ) : void
p1 Point3D
p2 Point3D
radius double
리턴 void

AddHorizontalPlane() 공개 메소드

public AddHorizontalPlane ( double z, CheckPoint checkPoint = null ) : void
z double
checkPoint CheckPoint
리턴 void

AddHorizontalPlane() 공개 메소드

public AddHorizontalPlane ( double x1, double x2, double y1, double y2, double z, CheckPoint checkPoint = null ) : void
x1 double
x2 double
y1 double
y2 double
z double
checkPoint CheckPoint
리턴 void

AddModelByDepthMap() 공개 메소드

public AddModelByDepthMap ( Bitmap image, Point3D origin, Vector3D xVec, Vector3D yVec, Vector3D zVec, double xSize, double ySize, double zSize, bool whiteIsBackground = true ) : void
image System.Drawing.Bitmap
origin Point3D
xVec Vector3D
yVec Vector3D
zVec Vector3D
xSize double
ySize double
zSize double
whiteIsBackground bool
리턴 void

AddPlane() 공개 메소드

public AddPlane ( double x1, double x2, double y1, double y2, double z1, double z2, double a, double b, double c, double d, CheckPoint checkPoint = null ) : void
x1 double
x2 double
y1 double
y2 double
z1 double
z2 double
a double
b double
c double
d double
checkPoint CheckPoint
리턴 void

AddPlane() 공개 메소드

public AddPlane ( double x1, double x2, double y1, double y2, double z1, double z2, double a, double b, double c, double x0, double y0, double z0, CheckPoint checkPoint = null ) : void
x1 double
x2 double
y1 double
y2 double
z1 double
z2 double
a double
b double
c double
x0 double
y0 double
z0 double
checkPoint CheckPoint
리턴 void

AddPolygon() 공개 메소드

public AddPolygon ( Point3D points ) : void
points Point3D
리턴 void

AddRayTracedObject() 공개 메소드

public AddRayTracedObject ( Point3D points, GetRayIntersection getRayIntersection ) : void
points Point3D
getRayIntersection GetRayIntersection
리턴 void

AddRayTracedObject() 공개 메소드

calculate intersections of some figure with rays from eyes through each pixel
public AddRayTracedObject ( Rectangle2D leftProjBoundaries, Rectangle2D rightProjBoundaries, GetRayIntersection getRayIntersection ) : void
leftProjBoundaries Rectangle2D
rightProjBoundaries Rectangle2D
getRayIntersection GetRayIntersection
리턴 void

AddRayTracedObject() 공개 메소드

public AddRayTracedObject ( double x1, double x2, double y1, double y2, double z1, double z2, GetRayIntersection getRayIntersection ) : void
x1 double
x2 double
y1 double
y2 double
z1 double
z2 double
getRayIntersection GetRayIntersection
리턴 void

AddSphere() 공개 메소드

public AddSphere ( double xCenter, double yCenter, double zCenter, double radius ) : void
xCenter double
yCenter double
zCenter double
radius double
리턴 void

AddSurface() 공개 메소드

public AddSurface ( SurfaceFunc func, double zFarthest, double zClosest ) : void
func SurfaceFunc
zFarthest double determines bounds of the grid (grid must coincide with visible region)
zClosest double determines base grid cell size
리턴 void

AddSurface() 공개 메소드

create figure using surface function
public AddSurface ( SurfaceFunc func, double x1, double x2, double y1, double y2, double zClosest ) : void
func SurfaceFunc
x1 double
x2 double
y1 double
y2 double
zClosest double
리턴 void

AddTriangle() 공개 메소드

public AddTriangle ( double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3 ) : void
x1 double
y1 double
z1 double
x2 double
y2 double
z2 double
x3 double
y3 double
z3 double
리턴 void

AutoStereogramBuilder() 공개 메소드

public AutoStereogramBuilder ( int xResolution, int yResolution, int subpixelsCount = 1, double pixelWidth = 0.0003, double pixelHeight = 0.0003, double distanceToEyes = 0.5, double distanceBetweenEyes = 0.065 ) : System
xResolution int Horizontal resolution of stereogram
yResolution int Vertical resolution of stereogram
subpixelsCount int Number of subpixels
pixelWidth double Width of pixel, in meters
pixelHeight double Height of pixel, in meters
distanceToEyes double Distance between stereogram and eyes, in meters
distanceBetweenEyes double Distance between eyes, in meters
리턴 System

Clear() 공개 메소드

public Clear ( ) : void
리턴 void

GenerateBitmap() 공개 메소드

public GenerateBitmap ( Bitmap backgroundImage ) : Bitmap
backgroundImage System.Drawing.Bitmap
리턴 System.Drawing.Bitmap

GenerateBitmap() 공개 메소드

public GenerateBitmap ( ColorGenerator colorGenerator = null ) : Bitmap
colorGenerator ColorGenerator
리턴 System.Drawing.Bitmap

GetAdditionalHeight() 공개 메소드

Height + GetAdditionalHeight(z) * 2 = height of visible area on range Z from the screen
public GetAdditionalHeight ( double z ) : double
z double
리턴 double

GetAdditionalWidth() 공개 메소드

Width + GetAdditionalWidth(z) * 2 = width of visible area on range Z from the screen
public GetAdditionalWidth ( double z ) : double
z double
리턴 double

GetConvexHullProjBoundaries() 공개 메소드

public GetConvexHullProjBoundaries ( Point3D points, bool isLeft ) : Rectangle2D
points Point3D
isLeft bool
리턴 Rectangle2D