C# 클래스 BRDFSlices.DisplayForm

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

보호된 프로퍼티들

프로퍼티 타입 설명
m_BRDF BRDFSlices.Vector3[
m_Intersections ].double[
m_Pen Pen
m_Slice Bitmap

공개 메소드들

메소드 설명
DisplayForm ( Vector3 _BRDF ) : System
LoadBRDF ( FileInfo _BRDFFile ) : BRDFSlices.Vector3[

Loads a MERL BRDF file

LookupBRDF ( Vector3 _BRDF, double _ThetaIn, double _PhiIn, double _ThetaOut, double _PhiOut, Vector3 &_Result ) : void

Given a pair of incoming/outgoing angles, look up the BRDF.

LookupBRDFTrilinear ( Vector3 _BRDF, double _ThetaHalf, double _ThetaDiff, double _PhiDiff, Vector3 &_Result ) : void
PhiDiff_index ( double _PhiDiff, double &_Interpolant ) : int
ThetaDiff_index ( double _ThetaDiff, double &_Interpolant ) : int
ThetaHalf_index ( double _ThetaHalf, double &_Interpolant ) : int
half_diff_coords_to_std_coords ( double _ThetaHalf, double _PhiHalf, double _ThetaDiff, double _PhiDiff, Vector3 &_In, Vector3 &_Out ) : void
half_diff_coords_to_std_coords ( double _ThetaHalf, double _PhiHalf, double _ThetaDiff, double _PhiDiff, double &_ThetaIn, double &_PhiIn, double &_ThetaOut, double &_PhiOut ) : void
std_coords_to_half_diff_coords ( double _ThetaIn, double _PhiIn, double _ThetaOut, double _PhiOut, double &_ThetaHalf, double &_PhiHalf, double &_ThetaDiff, double &_PhiDiff ) : void

보호된 메소드들

메소드 설명
BuildScaleTable ( ) : void
ComputeScaleFactor ( double _ThetaH, double _ThetaD, double _PhiD ) : double
Dispose ( bool disposing ) : void

Clean up any resources being used.

LoadBRDFBisou ( FileInfo _BRDFFile ) : double[][]

Loads a MERL BRDF file

LoadScaleTable ( ) : void
Redraw ( ) : void
SaveAllSlices ( ) : void
SaveAllSlices_BUGGED ( ) : void
SolveNewton ( double a, double b, int &_IterationsCount ) : double

Numerically computes the intersection of a straight line with a strange curve we know the equation of... We're using the http://en.wikipedia.org/wiki/Newton's_method The computation is occurring in [ThetaH,ThetaD] space: ^ ThetaD | PI/2 +----------/-----+ ThetaH PI/2 We're looking for intersection point o given 2 values: the slope of the straight line and PhiD that guides the curvature of the strange curve C(y) The position of a point P on the line is given by P(x)=[x,slope.x] (we know the slope) we find o so that o = P(x) = C(y) So we can write: x = atan( tan(PI/2 - y) / cos(PhiD)) y = slope.x Replacing: x = atan( tan(PI/2 - slope.x) / cos(PhiD) ) Tanning: tan(x) = tan(PI/2 - slope.x) / cos(PhiD) Or: tan(x).tan(slope.x) = 1 / cos(PhiD) We know "slope" and "PhiD", we need solve to find x which is the ThetaH at which the intersection occurs...

WarpSlice ( int _ThetaHIndex, int _ThetaDIndex, double _Warp, Vector3 &_Result ) : void
WarpSlice_Compress ( int _ThetaHIndex, int _ThetaDIndex, double _Warp, Vector3 &_Result ) : void

비공개 메소드들

메소드 설명
InitializeComponent ( ) : void

Required method for Designer support - do not modify the contents of this method with the code editor.

buttonRebuild_Click ( object sender, EventArgs e ) : void
checkBoxDifferences_CheckedChanged ( object sender, EventArgs e ) : void
checkBoxShowIsolines_CheckedChanged ( object sender, EventArgs e ) : void
checkBoxUseWarping_CheckedChanged ( object sender, EventArgs e ) : void
floatTrackbarControlExposure_ValueChanged ( Nuaj _Sender, float _fFormerValue ) : void
floatTrackbarControlGamma_ValueChanged ( Nuaj _Sender, float _fFormerValue ) : void
floatTrackbarControlScaleFactor_ValueChanged ( Nuaj _Sender, float _fFormerValue ) : void
floatTrackbarControlWarpFactor_ValueChanged ( Nuaj _Sender, float _fFormerValue ) : void
integerTrackbarControlPhiD_ValueChanged ( Nuaj _Sender, int _FormerValue ) : void

메소드 상세

BuildScaleTable() 보호된 메소드

protected BuildScaleTable ( ) : void
리턴 void

ComputeScaleFactor() 보호된 메소드

protected ComputeScaleFactor ( double _ThetaH, double _ThetaD, double _PhiD ) : double
_ThetaH double
_ThetaD double
_PhiD double
리턴 double

DisplayForm() 공개 메소드

public DisplayForm ( Vector3 _BRDF ) : System
_BRDF Vector3
리턴 System

Dispose() 보호된 메소드

Clean up any resources being used.
protected Dispose ( bool disposing ) : void
disposing bool true if managed resources should be disposed; otherwise, false.
리턴 void

LoadBRDF() 공개 정적인 메소드

Loads a MERL BRDF file
public static LoadBRDF ( FileInfo _BRDFFile ) : BRDFSlices.Vector3[
_BRDFFile FileInfo
리턴 BRDFSlices.Vector3[

LoadBRDFBisou() 보호된 메소드

Loads a MERL BRDF file
protected LoadBRDFBisou ( FileInfo _BRDFFile ) : double[][]
_BRDFFile FileInfo
리턴 double[][]

LoadScaleTable() 보호된 메소드

protected LoadScaleTable ( ) : void
리턴 void

LookupBRDF() 공개 정적인 메소드

Given a pair of incoming/outgoing angles, look up the BRDF.
public static LookupBRDF ( Vector3 _BRDF, double _ThetaIn, double _PhiIn, double _ThetaOut, double _PhiOut, Vector3 &_Result ) : void
_BRDF Vector3
_ThetaIn double
_PhiIn double
_ThetaOut double
_PhiOut double
_Result Vector3
리턴 void

LookupBRDFTrilinear() 공개 정적인 메소드

public static LookupBRDFTrilinear ( Vector3 _BRDF, double _ThetaHalf, double _ThetaDiff, double _PhiDiff, Vector3 &_Result ) : void
_BRDF Vector3
_ThetaHalf double
_ThetaDiff double
_PhiDiff double
_Result Vector3
리턴 void

PhiDiff_index() 공개 정적인 메소드

public static PhiDiff_index ( double _PhiDiff, double &_Interpolant ) : int
_PhiDiff double
_Interpolant double
리턴 int

Redraw() 보호된 메소드

protected Redraw ( ) : void
리턴 void

SaveAllSlices() 보호된 메소드

protected SaveAllSlices ( ) : void
리턴 void

SaveAllSlices_BUGGED() 보호된 메소드

protected SaveAllSlices_BUGGED ( ) : void
리턴 void

SolveNewton() 보호된 메소드

Numerically computes the intersection of a straight line with a strange curve we know the equation of... We're using the http://en.wikipedia.org/wiki/Newton's_method The computation is occurring in [ThetaH,ThetaD] space: ^ ThetaD | PI/2 +----------/-----+ ThetaH PI/2 We're looking for intersection point o given 2 values: the slope of the straight line and PhiD that guides the curvature of the strange curve C(y) The position of a point P on the line is given by P(x)=[x,slope.x] (we know the slope) we find o so that o = P(x) = C(y) So we can write: x = atan( tan(PI/2 - y) / cos(PhiD)) y = slope.x Replacing: x = atan( tan(PI/2 - slope.x) / cos(PhiD) ) Tanning: tan(x) = tan(PI/2 - slope.x) / cos(PhiD) Or: tan(x).tan(slope.x) = 1 / cos(PhiD) We know "slope" and "PhiD", we need solve to find x which is the ThetaH at which the intersection occurs...
protected SolveNewton ( double a, double b, int &_IterationsCount ) : double
a double
b double
_IterationsCount int
리턴 double

ThetaDiff_index() 공개 정적인 메소드

public static ThetaDiff_index ( double _ThetaDiff, double &_Interpolant ) : int
_ThetaDiff double
_Interpolant double
리턴 int

ThetaHalf_index() 공개 정적인 메소드

public static ThetaHalf_index ( double _ThetaHalf, double &_Interpolant ) : int
_ThetaHalf double
_Interpolant double
리턴 int

WarpSlice() 보호된 메소드

protected WarpSlice ( int _ThetaHIndex, int _ThetaDIndex, double _Warp, Vector3 &_Result ) : void
_ThetaHIndex int
_ThetaDIndex int
_Warp double
_Result Vector3
리턴 void

WarpSlice_Compress() 보호된 메소드

protected WarpSlice_Compress ( int _ThetaHIndex, int _ThetaDIndex, double _Warp, Vector3 &_Result ) : void
_ThetaHIndex int
_ThetaDIndex int
_Warp double
_Result Vector3
리턴 void

half_diff_coords_to_std_coords() 공개 정적인 메소드

public static half_diff_coords_to_std_coords ( double _ThetaHalf, double _PhiHalf, double _ThetaDiff, double _PhiDiff, Vector3 &_In, Vector3 &_Out ) : void
_ThetaHalf double
_PhiHalf double
_ThetaDiff double
_PhiDiff double
_In Vector3
_Out Vector3
리턴 void

half_diff_coords_to_std_coords() 공개 정적인 메소드

public static half_diff_coords_to_std_coords ( double _ThetaHalf, double _PhiHalf, double _ThetaDiff, double _PhiDiff, double &_ThetaIn, double &_PhiIn, double &_ThetaOut, double &_PhiOut ) : void
_ThetaHalf double
_PhiHalf double
_ThetaDiff double
_PhiDiff double
_ThetaIn double
_PhiIn double
_ThetaOut double
_PhiOut double
리턴 void

std_coords_to_half_diff_coords() 공개 정적인 메소드

public static std_coords_to_half_diff_coords ( double _ThetaIn, double _PhiIn, double _ThetaOut, double _PhiOut, double &_ThetaHalf, double &_PhiHalf, double &_ThetaDiff, double &_PhiDiff ) : void
_ThetaIn double
_PhiIn double
_ThetaOut double
_PhiOut double
_ThetaHalf double
_PhiHalf double
_ThetaDiff double
_PhiDiff double
리턴 void

프로퍼티 상세

m_BRDF 보호되어 있는 프로퍼티

protected Vector3[,BRDFSlices m_BRDF
리턴 BRDFSlices.Vector3[

m_Intersections 보호되어 있는 프로퍼티

protected double[,] m_Intersections
리턴 ].double[

m_Pen 보호되어 있는 프로퍼티

protected Pen m_Pen
리턴 Pen

m_Slice 보호되어 있는 프로퍼티

protected Bitmap m_Slice
리턴 Bitmap