Luxophia

Форк
0
/
LUX.Curve.T1.D2.pas 
121 строка · 4.2 Кб
1
unit LUX.Curve.T1.D2;
2

3
interface //#################################################################### ■
4

5
uses LUX,
6
     LUX.D1,
7
     LUX.D2, LUX.D2.V4,
8
     LUX.D4,
9
     LUX.Curve.T1.D1;
10

11
//type //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【型】
12

13
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
14

15
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
16

17
//const //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【定数】
18

19
//var //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【変数】
20

21
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
22

23
function CatmullRom( const P0_,P1_,P2_,P3_:TSingle2D; const T_:Single ) :TSingle2D; overload;
24
function CatmullRom( const P0_,P1_,P2_,P3_:TDouble2D; const T_:Double ) :TDouble2D; overload;
25
function CatmullRom( const P0_,P1_,P2_,P3_:TdSingle2D; const T_:TdSingle ) :TdSingle2D; overload;
26
function CatmullRom( const P0_,P1_,P2_,P3_:TdDouble2D; const T_:TdDouble ) :TdDouble2D; overload;
27

28
function Bezie4( const Ps_:TSingle2DV4; const T_:Single ) :TSingle2D; overload;
29
function Bezie4( const Ps_:TDouble2DV4; const T_:Double ) :TDouble2D; overload;
30
function Bezie4( const Ps_:TdSingle2DV4; const T_:TdSingle ) :TdSingle2D; overload;
31
function Bezie4( const Ps_:TdDouble2DV4; const T_:TdDouble ) :TdDouble2D; overload;
32

33
implementation //############################################################### ■
34

35
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
36

37
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
38

39
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
40

41
function CatmullRom( const P0_,P1_,P2_,P3_:TSingle2D; const T_:Single ) :TSingle2D;
42
begin
43
     Result.X := CatmullRom( P0_.X, P1_.X, P2_.X, P3_.X, T_ );
44
     Result.Y := CatmullRom( P0_.Y, P1_.Y, P2_.Y, P3_.Y, T_ );
45
end;
46

47
function CatmullRom( const P0_,P1_,P2_,P3_:TDouble2D; const T_:Double ) :TDouble2D;
48
begin
49
     Result.X := CatmullRom( P0_.X, P1_.X, P2_.X, P3_.X, T_ );
50
     Result.Y := CatmullRom( P0_.Y, P1_.Y, P2_.Y, P3_.Y, T_ );
51
end;
52

53
function CatmullRom( const P0_,P1_,P2_,P3_:TdSingle2D; const T_:TdSingle ) :TdSingle2D;
54
begin
55
     Result.X := CatmullRom( P0_.X, P1_.X, P2_.X, P3_.X, T_ );
56
     Result.Y := CatmullRom( P0_.Y, P1_.Y, P2_.Y, P3_.Y, T_ );
57
end;
58

59
function CatmullRom( const P0_,P1_,P2_,P3_:TdDouble2D; const T_:TdDouble ) :TdDouble2D;
60
begin
61
     Result.X := CatmullRom( P0_.X, P1_.X, P2_.X, P3_.X, T_ );
62
     Result.Y := CatmullRom( P0_.Y, P1_.Y, P2_.Y, P3_.Y, T_ );
63
end;
64

65
//------------------------------------------------------------------------------
66

67
function Bezie4( const Ps_:TSingle2DV4; const T_:Single ) :TSingle2D;
68
var
69
   Ws :TSingle4D;
70
begin
71
     Bezie4( T_, Ws );
72

73
     with Ws do Result := _1 * Ps_._1
74
                        + _2 * Ps_._2
75
                        + _3 * Ps_._3
76
                        + _4 * Ps_._4;
77
end;
78

79
function Bezie4( const Ps_:TDouble2DV4; const T_:Double ) :TDouble2D;
80
var
81
   Ws :TDouble4D;
82
begin
83
     Bezie4( T_, Ws );
84

85
     with Ws do Result := _1 * Ps_._1
86
                        + _2 * Ps_._2
87
                        + _3 * Ps_._3
88
                        + _4 * Ps_._4;
89
end;
90

91
function Bezie4( const Ps_:TdSingle2DV4; const T_:TdSingle ) :TdSingle2D;
92
var
93
   Ws :TdSingle4D;
94
begin
95
     Bezie4( T_, Ws );
96

97
     with Ws do Result := _1 * Ps_._1
98
                        + _2 * Ps_._2
99
                        + _3 * Ps_._3
100
                        + _4 * Ps_._4;
101
end;
102

103
function Bezie4( const Ps_:TdDouble2DV4; const T_:TdDouble ) :TdDouble2D;
104
var
105
   Ws :TdDouble4D;
106
begin
107
     Bezie4( T_, Ws );
108

109
     with Ws do Result := _1 * Ps_._1
110
                        + _2 * Ps_._2
111
                        + _3 * Ps_._3
112
                        + _4 * Ps_._4;
113
end;
114

115
//############################################################################## □
116

117
initialization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 初期化
118

119
finalization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 最終化
120

121
end. //######################################################################### ■
122

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.