Π Π°ΡΡΡΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π²ΡΠ΅, ΡΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ° ΠΈ ΠΊΠΈΡΡΠΈ, Ρ.Π΅. Π½Π° ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΠ°Π½ΠΈΡ ΡΠΈΠ³ΡΡ ΠΈ ΠΈΡ Π·Π°Π»ΠΈΠ²ΠΊΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΡΡΡΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²Π»ΠΈΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ SetPixel (ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Canvas.Pixels[X, Y]), Ρ.ΠΊ. ΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΌΠΎΡΡΡ ΠΊΠΈΡΡΠ΅ΠΉ.
ΠΠΎΠ΄, ΡΠΈΡΡΡΡΠΈΠΉ "ΡΠ΅Π·ΠΈΠ½ΠΎΠ²ΡΡ" Π»ΠΈΠ½ΠΈΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 1.59.
ΠΠΈΡΡΠΈΠ½Π³ 1.59. Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ "ΡΠ΅Π·ΠΈΠ½ΠΎΠ²ΠΎΠΉ" Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ½Π²Π΅ΡΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌprocedure TLinesForm.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
OldX := X;
OldY := Y;
BegX := X;
BegY := Y;
LineDrawing := True;
end;
end;
procedure TLinesForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if LineDrawing and ((X <> OldX) or (Y <> OldY)) then
with Canvas do
begin
SetROP2(Handle, R2_NOT);
Line(BegX, BegY, OldX, OldY); // Π‘ΡΠΈΡΠ°Π΅ΠΌ ΡΡΠ°ΡΡΡ Π»ΠΈΠ½ΠΈΡ.
Line(BegX, BegY, X, Y); // Π ΠΈΡΡΠ΅ΠΌ Π½ΠΎΠ²ΡΡ.
OldX := X;
OldY := Y;
end;
end;
procedure TLinesFom.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbLeft) and LineDrawing then
begin
case RGroupLine.ItemIndex of
2: Canvas.Pen.Color := clBlue;
3: begin
Canvas.Brush.Color := clRed;
Canvas.Pen.Color := clRed;
end;
4: Canvas.Pen.Color := clGreen;
end;
Line(BegX, BegY, X, Y);
LineDrawing := False;
end;
end;
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ΅Π·ΠΈΠ½ΠΎΠ²Π°Ρ Π»ΠΈΠ½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° ΠΌΡΡΡΡ Π΄Π°ΠΆΠ΅ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡΡΡ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠΎΡΠΌΡ, Ρ.Π΅. ΡΠΎΡΠΌΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΊΡΡΡΠΎΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π° Π΅Π΅ ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ. ΠΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π·Π°Ρ Π²Π°ΡΡ ΠΌΡΡΠΈ ΠΎΠΊΠ½ΠΎΠΌ. ΠΡΠ±ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π² Windows ΠΌΠΎΠΆΠ΅Ρ Π·Π°Ρ Π²Π°ΡΠΈΡΡ ΠΌΡΡΡ Π΄Π»Ρ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΈ ΡΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΌΡΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΡΠΎ ΠΎΠΊΠ½ΠΎ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊΡΡΡΠΎΡ. Π VCL Π»ΡΠ±ΠΎΠΉ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΡΡΠΈΠ»Ρ csCaptureMouse (Π° Ρ ΡΠΎΡΠΌΡ ΠΎΠ½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½) Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Ρ Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΌΡΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΡΠΈ Π΅Π΅ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ Π½Π°ΠΌ ΡΡΡΠ΅ΠΊΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
1.3.4.3. ΠΡΠΈΠ²ΡΠ΅ ΠΠ΅Π·ΡΠ΅
Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ β Π½Π°ΡΡΠΈΠΌΡΡ ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΡΡΠΈΠ»Π΅ΠΌ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΠΌΡΠ΅, Π½ΠΎ ΠΈ ΠΊΡΠΈΠ²ΡΠ΅. ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΌΠΈ ΠΊΡΠΈΠ²ΡΠΌΠΈ ΠΠ΅Π·ΡΠ΅ β ΠΎΠ½ΠΈ, Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Windows, Π° Π²ΠΎ-Π²ΡΠΎΡΡΡ , ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΡΠΈΠ²ΡΠ΅ (Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π² Windows NT/2000 XP Π²ΡΠ΅ ΠΊΡΠΈΠ²ΡΠ΅ β ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ, ΡΠ»Π»ΠΈΠΏΡΡ, Π΄ΡΠ³ΠΈ β Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠΈΡΡΡΡΡΡ ΠΊΡΠΈΠ²ΡΠΌΠΈ ΠΠ΅Π·ΡΠ΅).
Π’Π΅ΠΎΡΠΈΡ ΠΊΡΠΈΠ²ΡΡ ΠΠ΅Π·ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» Π. Π΄Π΅ ΠΠ°ΡΡΠ΅Π»ΠΎ Π² 1959 Π³ΠΎΠ΄Ρ ΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π½Π΅Π³ΠΎ, Π. ΠΠ΅Π·ΡΠ΅ Π² 1962 Π³ΠΎΠ΄Ρ. ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΊΡΠΈΠ²ΠΎΠΉ ΠΠ΅Π·ΡΠ΅ N-Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ N+1 ΡΠΎΡΠ΅ΠΊ, Π΄Π²Π΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΊΠΎΠ½ΡΡ ΠΊΡΠΈΠ²ΠΎΠΉ, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ N-1 Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΎΠΏΠΎΡΠ½ΡΠΌΠΈ. Π ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΡΠ΅ ΠΊΡΠΈΠ²ΡΠ΅ ΠΠ΅Π·ΡΠ΅, ΡΡΡΠΎΡΡΠΈΠ΅ΡΡ ΠΏΠΎ ΡΡΠ΅ΠΌ ΡΠΎΡΠΊΠ°ΠΌ, ΠΈ ΠΊΡΠ±ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΡΠΈΠ²ΡΠ΅ ΠΠ΅Π·ΡΠ΅, ΡΡΡΠΎΡΡΠΈΠ΅ΡΡ ΠΏΠΎ ΡΠ΅ΡΡΡΠ΅ΠΌ ΡΠΎΡΠΊΠ°ΠΌ. ΠΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΡΠ΅ ΠΊΡΠΈΠ²ΡΠ΅ ΠΠ΅Π·ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΡΠΈΡΡΠ°Ρ TrueType ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Windows API ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠΎΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΡΠ±ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΡΠΈΠ²ΡΠ΅ ΠΠ΅Π·ΡΠ΅.
ΠΡΠ±ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΡΠΈΠ²ΡΠ΅ ΠΠ΅Π·ΡΠ΅ Π·Π°Π΄Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΌΡΠ»ΠΎΠΉ:
P(t) = Π(1-t)Β³ + 3Bt(1-t)Β² + 3CtΒ²(1-t)+DtΒ³ (1)
Π³Π΄Π΅ Π β Π½Π°ΡΠ°Π»ΠΎ ΠΊΡΠΈΠ²ΠΎΠΉ, D β Π΅Π΅ ΠΊΠΎΠ½Π΅Ρ, Π° Π ΠΈ Π‘ β ΠΏΠ΅ΡΠ²Π°Ρ ΠΈ Π²ΡΠΎΡΠ°Ρ ΠΎΠΏΠΎΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ. ΠΡΡΠΌΠ°Ρ ΠΠ ΠΊΠ°ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΊ ΠΊΡΠΈΠ²ΠΎΠΉ Π² ΡΠΎΡΠΊΠ΅ Π, ΠΏΡΡΠΌΠ°Ρ CD β Π² ΡΠΎΡΠΊΠ΅ D. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ t ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΡ 0 Π΄ΠΎ 1. ΠΡΠΈ t = 0 P(t) = Π, ΠΏΡΠΈ t = 1 P(t) = D.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΊΡΠΈΠ²ΠΎΠΉ ΠΠ΅Π·ΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΅ Π΄Π΅Π»ΠΈΠΌΠΎΡΡΡ. ΠΡΠ»ΠΈ ΠΊΡΠΈΠ²ΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π΅ ΠΊΡΠΈΠ²ΡΡ Π² ΡΠΎΡΠΊΠ΅ t = 0,5, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΊΡΠΈΠ²ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΊΡΠΈΠ²ΠΎΠΉ ΠΠ΅Π·ΡΠ΅. ΠΠ° ΡΡΠΎΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΡΠΈΠ²ΡΡ ΠΠ΅Π·ΡΠ΅: Π΅ΡΠ»ΠΈ ΠΊΡΠΈΠ²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΎΡΠ½ΠΎ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π° ΠΏΡΡΠΌΠΎΠΉ, ΡΠΈΡΡΠ΅ΡΡΡ ΠΎΡΡΠ΅Π·ΠΎΠΊ ΠΏΡΡΠΌΠΎΠΉ, Π΅ΡΠ»ΠΈ Π½Π΅Ρ β ΠΎΠ½Π° ΡΠ°Π·Π±ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π΄Π²Π΅ ΠΊΡΠΈΠ²ΡΡ ΠΠ΅Π·ΡΠ΅, ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²Π½ΠΎΠ²Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ. ΠΠ»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΡΠΈΠ²ΡΡ ΠΠ΅Π·ΡΠ΅ ΡΠ»ΡΠΆΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ PolyBezier, PolyBezierTo ΠΈ PolyDraw.
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΡΡΠΎΠΈΡΡ ΠΊΡΠΈΠ²ΡΡ ΠΠ΅Π·ΡΠ΅ Π½Π΅ ΠΏΠΎ ΠΎΠΏΠΎΡΠ½ΡΠΌ ΡΠΎΡΠΊΠ°ΠΌ, Π° ΠΏΠΎ ΡΠΎΡΠΊΠ°ΠΌ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠΉΡΠΈ. ΠΡΡΡΡ ΠΊΡΠΈΠ²Π°Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π² ΡΠΎΡΠΊΠ΅ Π, ΠΏΡΠΈ t=β ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΊΡ Π', ΠΏΡΠΈ t=β β ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΊΡ Π‘', ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠΎΡΠΊΠ΅ D. ΠΠΎΠ΄ΡΡΠ°Π²Π»ΡΡ ΡΡΠΈ ΡΠΎΡΠΊΠΈ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ (1), ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π' ΠΈ Π‘' Ρ Π ΠΈ Π‘ . Π Π΅ΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ
(2)
ΠΠ· ΡΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ Π΄Π»Ρ Π»ΡΠ±ΡΡ ΡΠ΅ΡΡΡΠ΅Ρ ΡΠΎΡΠ΅ΠΊ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΈ ΠΏΡΠΈΡΠΎΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ, ΠΊΡΠΈΠ²Π°Ρ ΠΠ΅Π·ΡΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΎΡΠΊΠ΅, ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ t=β ΡΠ΅ΡΠ΅Π· Π²ΡΠΎΡΡΡ ΡΠΎΡΠΊΡ, ΠΏΡΠΈ t=β β ΡΠ΅ΡΠ΅Π· ΡΡΠ΅ΡΡΡ ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΎΠΏΠΎΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΊΡΠΈΠ²ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΠ΅Π· Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΏΡΠΈ Π΄ΡΡΠ³ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ t.
1.3.4.4. Π’ΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ
API Windows ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ (path). Π’ΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π·Π°ΠΏΠΈΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ° ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΌΠΊΠ½ΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ½ΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΡΡΠ΅Π·ΠΊΠΎΠ² ΠΏΡΡΠΌΡΡ ΠΈ ΠΊΡΠΈΠ²ΡΡ ΠΠ΅Π·ΡΠ΅. ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ Π² Windows NT/2000/XP ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Ρ Π²ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΡΠΌΡΡ , ΠΊΡΠΈΠ²ΡΡ ΠΈ Π·Π°ΠΌΠΊΠ½ΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° (Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°ΠΌΠΊΠ½ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡ Π±ΡΠ΄ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΊΠΎΠ½ΡΡΡΠ°ΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²). Π Windows 9x/Me ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΡΠΌΡΡ , Π»ΠΎΠΌΠ°Π½ΡΡ , ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ PolyDraw ΠΈ Rectangle), ΠΊΡΠΈΠ²ΡΡ ΠΠ΅Π·ΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ°. Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π»ΠΈΠΏΡΠΎΠ², ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ ΡΠ»Π»ΠΈΠΏΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄ΡΠ³ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ Π² Windows 9x/Me, Ρ.ΠΊ. Π² ΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠ»Π»ΠΈΠΏΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΡΠΈΠ²ΡΠ΅ ΡΠΈΡΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ, Π° Π½Π΅ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠΈΡΡΡΡΡΡ ΠΊΡΠΈΠ²ΡΠΌΠΈ ΠΠ΅Π·ΡΠ΅. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ BeginPath ΠΈ EndPath. ΠΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ BeginPath ΠΈ EndPath, Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π² Π½Π΅ΠΌ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π°, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ. ΠΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π·Π΄Π΅ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ, ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ Π² Π»ΠΎΠΌΠ°Π½ΡΡ. ΠΠ°ΠΊ ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ, Π²ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΎΡΡΠ΅Π·ΠΊΠΎΠ² ΠΏΡΡΠΌΡΡ ΠΈ ΠΊΡΠΈΠ²ΡΡ ΠΠ΅Π·ΡΠ΅. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΊΡΠΈΠ²ΠΎΠΉ ΠΠ΅Π·ΡΠ΅ ΠΎΠ½Π° Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠΈΡΡΠ΅ΡΡΡ Π»ΠΎΠΌΠ°Π½ΠΎΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²ΡΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π° Π½Π°Π±ΠΎΡΠΎΠΌ ΠΎΡΡΠ΅Π·ΠΊΠΎΠ² ΠΏΡΡΠΌΠΎΠΉ. Π€ΡΠ½ΠΊΡΠΈΡ FlattenPath ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΊΡΠΈΠ²ΡΠ΅ ΠΠ΅Π·ΡΠ΅, Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π² ΡΠΎΡΡΠ°Π² ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ, Π² Π»ΠΎΠΌΠ°Π½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΠΎΡΡΠ΅Π·ΠΊΠΎΠ² ΠΏΡΡΠΌΠΎΠΉ.
ΠΡΠΌΠ΅ΡΠΈΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ, ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ² ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π€ΡΠ½ΠΊΡΠΈΡ PathToRegion ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ Π² ΡΠ΅Π³ΠΈΠΎΠ½. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°, ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π»ΠΈ ΠΊΡΡΡΠΎΡ ΠΌΡΡΠΈ Π² ΠΎΠ±Π»Π°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΠΈΠ³ΡΡΠΎΠΉ. Π€ΡΠ½ΠΊΡΠΈΡ WidenPath ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ½ΡΡΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ Π² Π΄Π²Π° ΠΊΠΎΠ½ΡΡΡΠ° β Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ. Π Π°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΈΠ½ΠΎΠΉ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ ΠΊΠ°ΠΊ Π±Ρ ΡΡΠΎΠ»ΡΠ°Π΅ΡΡΡ. ΠΠΎΡΠ»Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ»ΡΠ΅Π½Π½ΠΎΠΉ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ Π² ΡΠ΅Π³ΠΈΠΎΠ½ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π»ΠΈ ΠΊΡΡΡΠΎΡ ΠΌΡΡΠΈ Π½Π° ΠΊΡΠΈΠ²ΡΡ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΡΠΎΠ»ΡΠΈΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ°.
ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΠΊΠ°Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ GetPath. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΈ ΡΠΈΠΏ ΡΠΎΡΠΊΠΈ (Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΠΈ, Π·Π°ΠΌΡΠΊΠ°ΡΡΠ°Ρ ΡΠΎΡΠΊΠ° ΠΎΡΡΠ΅Π·ΠΊΠ°, ΡΠΎΡΠΊΠ° ΠΊΡΠΈΠ²ΠΎΠΉ ΠΠ΅Π·ΡΠ΅, ΠΊΠΎΠ½Π΅Ρ ΠΊΠΎΠ½ΡΡΡΠ°).
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΎΠ·Π΄Π°Π² ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ ΠΈΠ· ΠΊΡΠΈΠ²ΠΎΠΉ ΠΠ΅Π·ΡΠ΅ (BeginPath/PoliBezier/EndPath), ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΡΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ Π² Π»ΠΎΠΌΠ°Π½ΡΡ (FlattenPath), Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠ³Π»ΠΎΠ²ΡΡΠΎΠΉ Π»ΠΎΠΌΠ°Π½ΠΎΠΉ (GetPath). Π ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ ΡΡΠΎΠΉ Π»ΠΎΠΌΠ°Π½ΠΎΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΡΡΠΈΠ»Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ LineDDA. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π·Π°Π΄Π°ΡΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΊΡΠΈΠ²ΠΎΠΉ ΠΠ΅Π·ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½Π° ΠΊ ΡΠΆΠ΅ ΡΠ΅ΡΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΡΡΠ΅Π·ΠΊΠ°.
Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 1.60 ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ DrawCurve, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ΄Π΅ΡΡ FCurve β ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΡΠΎΡΠΌΡ ΡΠΈΠΏΠ° TCurve, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΡΠ°Π½ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠ΅ΡΡΡΠ΅Ρ ΡΠΎΡΠ΅ΠΊ, ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΡ ΠΊΡΠΈΠ²ΡΡ.
ΠΠΈΡΡΠΈΠ½Π³ 1.60. Π Π°Π±ΠΎΡΠ° Ρ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΡΠΈΠ²ΠΎΠΉ ΠΠ΅Π·ΡΠ΅type
// Π’ΠΈΠΏ TCurve Ρ ΡΠ°Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΊΡΠΈΠ²ΠΎΠΉ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅: Π½Π°ΡΠ°Π»ΠΎ,
// ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΡΠΎΡΠΊΡ, Π²ΡΠΎΡΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΡΠΎΡΠΊΡ, ΠΊΠΎΠ½Π΅Ρ