OnDrawFrame в WPFObjects

OnDrawFrame убрали из GraphWPF - там только BeginFrameBasedAnimationTime
Правки в NumLibABC
MatrSlice в PABCSystem.pas
Версия 3.5.1 накопительная
This commit is contained in:
Mikhalkovich Stanislav 2019-09-14 15:17:06 +03:00
parent bce9925230
commit d17edbd8b4
58 changed files with 22539 additions and 11979 deletions

View file

@ -2156,17 +2156,24 @@ namespace PascalABCCompiler
if (InternalDebug.CodeGeneration)
#endif
{
int n = 1;
try
{
File.Create(CompilerOptions.OutputFileName).Close();
//File.Delete(CompilerOptions.OutputFileName);
n = 2;
var fs = File.Create(CompilerOptions.OutputFileName);
n = 3;
fs.Close();
n = 4;
///////File.Delete(CompilerOptions.OutputFileName);
string pdb_file_name=Path.ChangeExtension(CompilerOptions.OutputFileName, ".pdb");
if (File.Exists(pdb_file_name))
File.Delete(pdb_file_name);
n = 5;
}
catch (Exception)
catch (Exception e)
{
throw new UnauthorizedAccessToFile(CompilerOptions.OutputFileName);
throw new UnauthorizedAccessToFile(CompilerOptions.OutputFileName + " -- " + n + " " + e.ToString());
//throw e;
}
OnChangeCompilerState(this, CompilerState.CodeGeneration, CompilerOptions.OutputFileName);
string[] ResourceFilesArray = null;

View file

@ -14,8 +14,8 @@ internal static class RevisionClass
{
public const string Major = "3";
public const string Minor = "5";
public const string Build = "0";
public const string Revision = "2241";
public const string Build = "1";
public const string Revision = "2247";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%MINOR%=5
%REVISION%=2241
%COREVERSION%=0
%REVISION%=2247
%COREVERSION%=1
%MAJOR%=3

View file

@ -10,6 +10,7 @@
<param name="Keyword" value="Fill">
<param name="Keyword" value="ForEach">
<param name="Keyword" value="Indices">
<param name="Keyword" value="MatrSlice">
<param name="Keyword" value="Print">
<param name="Keyword" value="Println">
<param name="Keyword" value="Row">
@ -49,6 +50,10 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó äâóìåðíîãî ìàññèâà</td></tr>
<tr><td><code><b>function</b> Indices&lt;T&gt;(Self: <b>array</b> [,] <b>of</b> T; cond: T -&gt; boolean): <b>sequence </b> <b>of</b> (integer, integer);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ, óäîâëåòâîðÿþùèõ çàäàííîìó óñëîâèþ</td></tr>
<tr><td><code><b>function</b> MatrSlice&lt;T&gt;(Self: array[,] <b>of</b> T; RowIndex: <b>array</b> <b>of</b> integer; ColIndex: <b>array</b> <b>of</b> integer): array[,] <b>of</b> T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ñðåç äâóìåðíîãî ìàññèâà. RowIndex è ColIndex çàäàþò ñðåçàåìûå ñòðîêè è ñòîëáöû</td></tr>
<tr><td><code><b>function</b> MatrSlice&lt;T&gt;(Self: array[,] <b>of</b> T; FromRow, ToRow, FromCol, ToCol: integer): array[,] <b>of</b> T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ñðåç äâóìåðíîãî ìàññèâà ìåæäó ñòðîêàìè FromRow, ToRow è ñòîëáöàìè FromCol, ToCol</td></tr>
<tr><td><code><b>function</b> Print&lt;T&gt;(Self: <b>array</b> [,] <b>of</b> T; w: integer := 4): <b>array</b> [,] <b>of</b> T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âûâîä äâóìåðíîãî ìàññèâà, w - øèðèíà ïîëÿ âûâîäà</td></tr>
<tr><td><code><b>function</b> Print(Self: <b>array</b> [,] <b>of</b> real; w: integer := 7; f: integer := 2): <b>array</b> [,] <b>of</b> real;</code>

View file

@ -149,6 +149,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -132,6 +132,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -152,6 +152,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -132,6 +132,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -143,6 +143,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -157,6 +157,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -142,6 +142,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -149,6 +149,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -124,6 +124,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -142,6 +142,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -149,6 +149,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -23,6 +23,7 @@
<param name="Keyword" value="MoveTo">
<param name="Keyword" value="Object3D">
<param name="Keyword" value="Position">
<param name="Keyword" value="PositionAfterTime">
<param name="Keyword" value="Rotate">
<param name="Keyword" value="RotateAt">
<param name="Keyword" value="RotateAtAbsolute">
@ -136,6 +137,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -125,6 +125,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -138,6 +138,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -142,6 +142,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -149,6 +149,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -138,6 +138,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -149,6 +149,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -136,6 +136,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -161,6 +161,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -148,6 +148,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -152,6 +152,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -135,6 +135,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -143,6 +143,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -143,6 +143,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -142,6 +142,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -141,6 +141,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -146,6 +146,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -149,6 +149,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -152,6 +152,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>

View file

@ -1,6 +1,7 @@
<HTML><HEAD><object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
<param name="Keyword" value="BackgroundColor">
<param name="Keyword" value="CameraMode">
<param name="Keyword" value="HideAll">
<param name="Keyword" value="Save">
<param name="Keyword" value="ShowCameraInfo">
<param name="Keyword" value="ShowCoordinateSystem">
@ -31,7 +32,9 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Çàãîëîâîê ïðîñòðàíñòâà îòîáðàæåíèÿ</td></tr>
</tr><tr><td></td></tr><tr><td class="secttitle"><font style="font-size: 11pt">Ìåòîäû êëàññà View3DType</font></td></tr>
<tr><tr><td><code><b>procedure</b> Save(fname: string);</code>
<tr><tr><td><code><b>procedure</b> HideAll;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Íå îòîáðàæàòü êîîðäèíàòíóþ ñèñòåìó, êîîðäèíàòíóþ ñåòêó è ViewCube</td></tr>
<tr><td><code><b>procedure</b> Save(fname: string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîõðàíÿåò ñîäåðæèìîå 3d-îêíà â ôàéë</td></tr>
</tr></table>
</body></HTML>

View file

@ -1,6 +1,5 @@
<HTML><HEAD><object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
<param name="Keyword" value="OnDrawFrame">
<param name="Keyword" value="OnInit">
<param name="Keyword" value="OnKeyDown">
<param name="Keyword" value="OnKeyPress">
<param name="Keyword" value="OnKeyUp">
@ -11,8 +10,6 @@
</HEAD><body><H1>Ñîáûòèÿ ìîäóëÿ Graph3D</H1>
<table border=0 cellpadding=5><tr><td><code>OnDrawFrame: <b>procedure</b>(dt: real);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîáûòèå ïåðåðèñîâêè ãðàôè÷åñêîãî 3D-îêíà.Èíèöèàëèçèðóåòñÿ ïðîöåäóðîé ñ âåùåñòâåííûì ïàðàìåòðîì dt - âðåìåíåì, ïðîøåäøèì ñ ìîìåíòà ïîñëåäíåãî îáíîâëåíèÿ ýêðàíà</td></tr>
<tr><td><code>OnInit: <b>procedure</b>;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Событие инициализации объектов графического окна. Используется чтобы объекты не прорисовывались до конца инициализации</td></tr>
<tr><td><code>OnKeyDown: <b>procedure</b>(k: Key);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîáûòèå íàæàòèÿ êëàâèøè</td></tr>
<tr><td><code>OnKeyPress: <b>procedure</b>(ch: char);</code>

View file

@ -4,6 +4,7 @@
<param name="Keyword" value="FindNearestObject">
<param name="Keyword" value="FindNearestObjectPoint">
<param name="Keyword" value="NearestPointOnLine">
<param name="Keyword" value="ParametricTrajectory">
<param name="Keyword" value="PointOnPlane"></object>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
</HEAD><body><H1>Graph3D: функции для определения ближайших точек и объектов</H1>
@ -17,6 +18,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает точку на ближайшем 3D-объекте, который пересекает луч, выпущенный из камеры и проходящий через точку (x,y) экрана. Если пересечения нет, возвращается точка BadPoint</td></tr>
<tr><td><code><b>function</b> NearestPointOnLine(Line: Ray3D; x, y: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает ближайшую точку на линии Line с лучом, выпущенным из камеры и проходящем через точку (x,y) экрана</td></tr>
<tr><td><code><b>function</b> ParametricTrajectory(a,b: real; N: integer; fun: real-&gt;Point3D): <b>sequence </b> <b>of</b> Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîçäà¸ò òðàåêòîðèþ â âèäå ìàññèâà òî÷åê, çàäàííóþ ïàðàìåòðè÷åñêè. Ôóíêöèÿ fun îòîáðàæàåò ïàðàìåòð t íà êîîðäèíàòû òî÷êè â ïðîñòðàíñòâå</td></tr>
<tr><td><code><b>function</b> PointOnPlane(Plane: Plane3D; x, y: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает точку на плоскости Plane, которую пересекает невизуальный луч, выпущенный из камеры и проходящий через точку (x,y) экрана</td></tr>
</table>

View file

@ -1,26 +1,38 @@
<HTML><HEAD><object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
<param name="Keyword" value="Âîçâðàùàåò"></object>
<param name="Keyword" value="ARGB">
<param name="Keyword" value="EmptyColor">
<param name="Keyword" value="GrayColor">
<param name="Keyword" value="P3D">
<param name="Keyword" value="Pnt">
<param name="Keyword" value="RandomColor">
<param name="Keyword" value="Rect">
<param name="Keyword" value="Redraw">
<param name="Keyword" value="RGB">
<param name="Keyword" value="Sz3D">
<param name="Keyword" value="V3D"></object>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
</HEAD><body><H1>Êîðîòêèå ôóíêöèè ìîäóëÿ Graph3D</H1>
<table border=0 cellpadding=5><tr><td><code>/// Âîçâðàùàåò öâåò ïî êðàñíîé, çåëåíîé è ñèíåé ñîñòàâëÿþùåé (â äèàïàçîíå 0..255);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cedure Redraw(p: ()-&gt;());</td></tr>
<tr><td><code>/// Âîçâðàùàåò öâåò ïî êðàñíîé, çåëåíîé è ñèíåé ñîñòàâëÿþùåé è ïàðàìåòðó ïðîçðà÷íîñòè (â äèàïàçîíå 0..255);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ction RGB(r, g, b: byte): Color;</td></tr>
<tr><td><code>/// Âîçâðàùàåò ñåðûé öâåò ñ èíòåíñèâíîñòüþ b;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ction ARGB(a, r, g, b: byte): Color;</td></tr>
<tr><td><code>/// Âîçâðàùàåò ñëó÷àéíûé öâåò;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ction GrayColor(b: byte): Color;</td></tr>
<tr><td><code>/// Âîçâðàùàåò ïîëíîñòüþ ïðîçðà÷íûé öâåò;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ction RandomColor: Color;</td></tr>
<tr><td><code>/// Âîçâðàùàåò òî÷êó ñ êîîðäèíàòàìè (x,y);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ction EmptyColor: Color;</td></tr>
<tr><td><code>/// Âîçâðàùàåò ïðÿìîóãîëüíèê ñ êîîðäèíàòàìè óãëà (x,y), øèðèíîé w è âûñîòîé h;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ction Pnt(x, y: real): Point;</td></tr>
<tr><td><code>/// Âîçâðàùàåò 3D-òî÷êó ñ êîîðäèíàòàìè (x,y,z);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ction Rect(x, y, w, h: real): GRect;</td></tr>
<tr><td><code>/// Âîçâðàùàåò 3D-âåêòîð ñ êîîðäèíàòàìè (x,y,z);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ction P3D(x, y, z: real): Point3D;</td></tr>
<tr><td><code>/// Âîçâðàùàåò 3D-ðàçìåð ñ êîîðäèíàòàìè (x,y,z);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ction V3D(x, y, z: real): Vector3D;</td></tr>
<table border=0 cellpadding=5><tr><td><code><b>function</b> ARGB(a, r, g, b: byte): Color;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò öâåò ïî êðàñíîé, çåëåíîé è ñèíåé ñîñòàâëÿþùåé è ïàðàìåòðó ïðîçðà÷íîñòè (â äèàïàçîíå 0..255)</td></tr>
<tr><td><code><b>function</b> EmptyColor: Color;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïîëíîñòüþ ïðîçðà÷íûé öâåò</td></tr>
<tr><td><code><b>function</b> GrayColor(b: byte): Color;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ñåðûé öâåò ñ èíòåíñèâíîñòüþ b</td></tr>
<tr><td><code><b>function</b> P3D(x, y, z: real): Point3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò 3D-òî÷êó ñ êîîðäèíàòàìè (x,y,z)</td></tr>
<tr><td><code><b>function</b> Pnt(x, y: real): Point;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò òî÷êó ñ êîîðäèíàòàìè (x,y)</td></tr>
<tr><td><code><b>function</b> RandomColor: Color;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ñëó÷àéíûé öâåò</td></tr>
<tr><td><code><b>function</b> Rect(x, y, w, h: real): GRect;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïðÿìîóãîëüíèê ñ êîîðäèíàòàìè óãëà (x,y), øèðèíîé w è âûñîòîé h</td></tr>
<tr><td><code><b>procedure</b> Redraw(p: ()-&gt;());</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðîöåäóðà óñêîðåíèÿ âûâîäà. Îáíîâëÿåò ýêðàí ïîñëå âñåõ èçìåíåíèé</td></tr>
<tr><td><code><b>function</b> RGB(r, g, b: byte): Color;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò öâåò ïî êðàñíîé, çåëåíîé è ñèíåé ñîñòàâëÿþùåé (â äèàïàçîíå 0..255)</td></tr>
<tr><td><code><b>function</b> Sz3D(x, y, z: real): Size3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò 3D-ðàçìåð ñ êîîðäèíàòàìè (x,y,z)</td></tr>
<tr><td><code><b>function</b> V3D(x, y, z: real): Vector3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò 3D-âåêòîð ñ êîîðäèíàòàìè (x,y,z)</td></tr>
</table>
</body></HTML>

View file

@ -15,7 +15,8 @@
<param name="Keyword" value="Window">
<param name="Keyword" value="XAxis">
<param name="Keyword" value="YAxis">
<param name="Keyword" value="ZAxis"></object>
<param name="Keyword" value="ZAxis">
<param name="Keyword" value="ZeroVector"></object>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
</HEAD><body><H1>Ïåðåìåííûå ìîäóëÿ Graph3D</H1>
<table border=0 cellpadding=5><tr><td><code>BadPoint: Point3D;</code>
@ -52,5 +53,7 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Îñü OY</td></tr>
<tr><td><code>ZAxis: Ray3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Îñü OZ</td></tr>
<tr><td><code>ZeroVector: Vector3D;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Íóëåâîé âåêòîð</td></tr>
</table>
</body></HTML>

View file

@ -24,6 +24,6 @@
<tr><td><code>OnResize: <b>procedure</b>;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ńîáűňčĺ čçěĺíĺíč˙ đŕçěĺđŕ ăđŕôč÷ĺńęîăî îęíŕ</td></tr>
<tr><td><code>OnDrawFrame: <b>procedure</b>(dt: real);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD></td></tr>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Событие перерисовки графического окна.Инициализируется процедурой с вещественным параметром dt - временем, прошедшим с момента последнего обновления экрана</td></tr>
</table>
</body></HTML>

View file

@ -31,7 +31,7 @@
<tr><td><code><b>function</b> Rect(x,y,w,h: real): GRect;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïðÿìîóãîëüíèê ñ êîîðäèíàòàìè óãëà (x,y), øèðèíîé w è âûñîòîé h</td></tr>
<tr><td><code><b>procedure</b> Redraw(d: ()-&gt;());</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Процедура ускорения вывода нескольких графических команд</td></tr>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Процедура ускорения вывода. Обновляет экран после всех изменений</td></tr>
<tr><td><code><b>function</b> RGB(r,g,b: byte): Color;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò öâåò ïî êðàñíîé, çåëåíîé è ñèíåé ñîñòàâëÿþùåé (â äèàïàçîíå 0..255)</td></tr>
</table>

View file

@ -31,7 +31,7 @@
<tr><td><code><b>function</b> Rect(x,y,w,h: real): GRect;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïðÿìîóãîëüíèê ñ êîîðäèíàòàìè óãëà (x,y), øèðèíîé w è âûñîòîé h</td></tr>
<tr><td><code><b>procedure</b> Redraw(p: ()-&gt;());</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Процедура ускорения вывода нескольких графических команд</td></tr>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Процедура ускорения вывода. Обновляет экран после всех изменений</td></tr>
<tr><td><code><b>function</b> RGB(r,g,b: byte): Color;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò öâåò ïî êðàñíîé, çåëåíîé è ñèíåé ñîñòàâëÿþùåé (â äèàïàçîíå 0..255)</td></tr>
</table>

View file

@ -1 +1 @@
3.5.0.2241
3.5.1.2247

View file

@ -1 +1 @@
!define VERSION '3.5.0.2241'
!define VERSION '3.5.1.2247'

View file

@ -1,6 +1,7 @@
unit NumLibABC;
unit NumLibABC;
const &NumLibABCVersion = 'NumLibABC 1.0.0 от 06.09.2017';
const &NumLibABCVersion = 'NumLibABC 1.0.1 от 14.09.2019';
// предыдущая версия 1.0.0 от 06.09.2017
type
Point=auto class
@ -658,7 +659,7 @@ type
/// Выбор результатов по лучшим из p проб, сделанных BPHS
function BestP(a,b:array of real;
eps:real;
eps:real:=0.01; //- версия 1.0.1
p:integer:=10;
k:integer:=100;
m:integer:=1000):List<(real,array of real)>;
@ -716,10 +717,13 @@ type
end;
/// НОД пары чисел
class function GCD(a,b:BigInteger):BigInteger;
class function GCD(a, b: BigInteger): BigInteger;
begin
while b<>0 do (a,b):=(b,a mod b);
Result:=a
if a < 0 then
a := -a;
while b <> 0 do
(a, b) := (b, a mod b);
Result := a
end;
public

View file

@ -6,45 +6,23 @@
// https://github.com/SunSerega/POCGL/blob/master/LICENSE
//*****************************************************************************************************\\
// Copyright (©) Сергей Латченко ( github.com/SunSerega | forum.mmcs.sfedu.ru/u/sun_serega )
// Этот код распространяется под Unlicense
// Для деталей смотрите в файл LICENSE или это:
// Этот код распространяется с лицензией Unlicense
// Подробнее в файле LICENSE или тут:
// https://github.com/SunSerega/POCGL/blob/master/LICENSE
//*****************************************************************************************************\\
///
/// Код переведён отсюда:
///Код переведён отсюда:
/// https://github.com/KhronosGroup/OpenCL-Headers/tree/master/CL
///
/// Спецификация:
/// www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html
///Спецификации всех версий:
/// https://www.khronos.org/registry/OpenCL/
///
/// Для замечаний:
///Если не хватает функции, перечисления, или найдена ошибка - писать сюда:
/// https://github.com/SunSerega/POCGL/issues
///
unit OpenCL;
//ToDo ^T -> pointer
//ToDo расширения, с которыми непонятно что делать:
//
// - cl_ext.h
// -- cl_qcom_ext_host_ptr
// -- cl_qcom_ext_host_ptr_iocoherent
// -- cl_qcom_ion_host_ptr
// -- cl_qcom_android_native_buffer_host_ptr
// -- cl_img_yuv_image
//
// - cl_d3d11.h
// -- нет функций, есть только Enums и коды ошибок
//
// - cl_platform.h
// -- есть только описание типов и констант, которые нигде не используются
//ToDo .h файлы, которые осталось перевести:
// - cl_ext_intel
// - cl_va_api_media_sharing_intel
// - cl_dx9_media_sharing_intel
uses System;
uses System.Runtime.InteropServices;
@ -62,7 +40,7 @@ type
cl_event = IntPtr;
cl_sampler = IntPtr;
///0=false, остальное=true
///0 = false, остальное = true
cl_bool = UInt32;
cl_bitfield = UInt64;
@ -76,7 +54,7 @@ type
{$endregion Основные типы}
{$region Энумы} type
{$region Перечисления} type
{$region case Result of}
@ -1408,7 +1386,7 @@ type
{$endregion Флаги}
{$endregion Энумы}
{$endregion Перечисления}
{$region Делегаты}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,8 @@
unit OpenGLABC;

///
///Модуль, зарезервированный для высокоуровневой оболочки модуля OpenGL
///
unit OpenGLABC;
interface

View file

@ -81,7 +81,9 @@ end;
function CreateFile<T>(fname: string): file of T;
begin
if ContainsReferenceTypes(typeof(T)) then
begin
raise new System.SystemException(GetTranslation(BAD_TYPE_IN_TYPED_FILE));
end;
var res: file of T;
PABCSystem.Rewrite(res, fname);
Result := res;

View file

@ -2358,7 +2358,7 @@ const
EOLN_FOR_TEXT_WRITEOPENED = 'Функция Eoln не может быть вызвана для текстового файла, открытого на запись!!Eoln function can''t be called for file, opened on writing';
SEEKEOF_FOR_TEXT_WRITEOPENED = 'Функция SeekEof не может быть вызвана для текстового файла, открытого на запись!!SeekEof function can''t be called for file, opened on writing';
SEEKEOLN_FOR_TEXT_WRITEOPENED = 'Функция SeekEoln не может быть вызвана для текстового файла, открытого на запись!!SeekEoln function can''t be called for file, opened on writing';
BAD_TYPE_IN_RUNTIMESIZEOF = 'Bad Type in RunTimeSizeOf';
BAD_TYPE_IN_RUNTIMESIZEOF = 'Для типизированных файлов нельзя указывать тип элементов, являющийся ссылочным или содержащий ссылочные поля!!Bad Type in RunTimeSizeOf';
PARAMETER_MUST_BE_GREATER_EQUAL_0 = 'Параметр должен быть >= 0!!Parameter must be >= 0';
PARAMETER_MUST_BE_GREATER_0 = 'Параметр должен быть > 0!!Parameter must be > 0';
PARAMETER_MUST_BE_GREATER_1 = 'Параметр должен быть > 1!!Parameter must be > 1';
@ -2369,6 +2369,12 @@ const
ARR_LENGTH_MUST_BE_MATCH_TO_MATR_SIZE = 'Размер одномерного массива не согласован с размером двумерного массива!!The 1-dim array length does not match 2-dim array size';
INITELEM_COUNT_MUST_BE_EQUAL_TO_MATRIX_ELEMS_COUNT = 'Количество инициализирующих элементов не совпадает с количеством элементов матрицы!!The number of elements in init list must be equal to the number of elements in matrix';
TYPED_FILE_CANBE_OPENED_IN_SINGLEBYTE_ENCODING_ONLY = 'При открытии типизированного файла можно указывать только однобайтную кодировку!!Typed file can be opened in single byte encoding only';
BAD_ROW_INDEX = 'Один из элементов массива RowIndex выходит за пределы индексов строк двумерного массива!!One of the elements of RowIndex array is out of range of 2-dim array row indexes';
BAD_COL_INDEX = 'Один из элементов массива ColIndex выходит за пределы индексов столбцов двумерного массива!!One of the elements of ColIndex array is out of range of 2-dim array column indexes';
BAD_ROW_INDEX_FROM = 'FromRow выходит за пределы индексов строк двумерного массива!!FromRow is out of range of 2-dim array row indexes';
BAD_ROW_INDEX_TO = 'ToRow выходит за пределы индексов строк двумерного массива!!ToRow is out of range of 2-dim array row indexes';
BAD_COL_INDEX_FROM = 'FromCol выходит за пределы индексов строк двумерного массива!!FromCol is out of range of 2-dim array column indexes';
BAD_COL_INDEX_TO = 'ToCol выходит за пределы индексов строк двумерного массива!!ToCol is out of range of 2-dim array column indexes';
// -----------------------------------------------------
// WINAPI
@ -9923,6 +9929,61 @@ begin
act(Self[i, j],i,j);
end;
function InR(Self: integer; a,b: integer): boolean;
begin
Result := (a <= Self) and (Self <= b);
end;
/// Возвращает срез двумерного массива. RowIndex и ColIndex задают срезаемые строки и столбцы
function MatrSlice<T>(Self: array[,] of T; RowIndex: array of integer; ColIndex: array of integer): array[,] of T; extensionmethod;
begin
if RowIndex = nil then
raise new System.ArgumentNullException('RowIndex');
if ColIndex = nil then
raise new System.ArgumentNullException('ColIndex');
if RowIndex.Any(i->not InR(i,0,Self.RowCount-1)) then
raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_ROW_INDEX),new Exception);
if ColIndex.Any(i->not InR(i,0,Self.ColCount-1)) then
raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_COL_INDEX),new Exception);
Result := new T[RowIndex.Length, ColIndex.Length];
var r := 0;
foreach var ir in RowIndex do
begin
var c := 0;
foreach var jc in ColIndex do
begin
Result[r, c] := Self[ir, jc];
c += 1;
end;
r += 1;
end
end;
/// Возвращает срез двумерного массива между строками FromRow, ToRow и столбцами FromCol, ToCol
function MatrSlice<T>(Self: array[,] of T; FromRow, ToRow, FromCol, ToCol: integer): array[,] of T; extensionmethod;
begin
if not InR(FromRow,0,Self.RowCount-1) then
raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_ROW_INDEX_FROM),new Exception);
if not InR(ToRow,0,Self.RowCount-1) then raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_ROW_INDEX_TO),new Exception);
if not InR(FromCol,0,Self.ColCount-1) then
raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_COL_INDEX_FROM),new Exception);
if not InR(ToCol,0,Self.ColCount-1) then
raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_COL_INDEX_TO),new Exception);
Result := new T[ToRow-FromRow+1, ToCol-FromCol+1];
var r := 0;
for var ir:=FromRow to ToRow do
begin
var c := 0;
for var jc:=FromCol to ToCol do
begin
Result[r, c] := Self[ir, jc];
c += 1;
end;
r += 1;
end
end;
// -----------------------------------------------------
//>> Фиктивная секция YYY - не удалять! # YYY
// -----------------------------------------------------

View file

@ -483,9 +483,6 @@ var OnKeyUp: procedure(k: Key);
var OnKeyPress: procedure(ch: char);
/// Событие изменения размера графического окна
var OnResize: procedure;
/// Событие перерисовки графического окна.
///Инициализируется процедурой с вещественным параметром dt - временем, прошедшим с момента последнего обновления экрана
var OnDrawFrame: procedure(dt: real) := nil;
//{{{--doc: Конец секции 3 }}}
@ -1569,6 +1566,7 @@ procedure SystemOnResize(sender: Object; e: SizeChangedEventArgs) :=
var OnDraw: procedure := nil;
var OnDraw1: procedure(frame: integer) := nil;
var OnDrawT: procedure(dt: real) := nil;
var FrameRate := 61; // кадров в секунду. Можно меньше!
var LastUpdatedTime := new System.TimeSpan(integer.MinValue);
@ -1577,12 +1575,12 @@ var FrameNum := 0;
procedure RenderFrame(o: Object; e: System.EventArgs);
begin
if (OnDraw<>nil) or (OnDraw1<>nil) or (OnDrawFrame<>nil) then
if (OnDraw<>nil) or (OnDraw1<>nil) or (OnDrawT<>nil) then
begin
var e1 := RenderingEventArgs(e).RenderingTime;
var dt := e1 - LastUpdatedTime;
var delta := 1000/Framerate; // через какое время обновлять
if OnDrawFrame<>nil then
if OnDrawT<>nil then
delta := 0; // перерисовывать когда придёт время
if dt.TotalMilliseconds < delta then
exit
@ -1593,8 +1591,8 @@ begin
OnDraw()
else if OnDraw1<>nil then
OnDraw1(FrameNum)
else if OnDrawFrame<>nil then
OnDrawFrame(dt.Milliseconds/1000);
else if OnDrawT<>nil then
OnDrawT(dt.Milliseconds/1000);
end;
end;
@ -1616,7 +1614,7 @@ end;
procedure BeginFrameBasedAnimationTime(Draw: procedure(dt: real));
begin
OnDrawFrame := Draw;
OnDrawT := Draw;
end;
procedure EndFrameBasedAnimation;

View file

@ -1,6 +1,7 @@
unit NumLibABC;
unit NumLibABC;
const &NumLibABCVersion = 'NumLibABC 1.0.0 от 06.09.2017';
const &NumLibABCVersion = 'NumLibABC 1.0.1 от 14.09.2019';
// предыдущая версия 1.0.0 от 06.09.2017
type
Point=auto class
@ -658,7 +659,7 @@ type
/// Выбор результатов по лучшим из p проб, сделанных BPHS
function BestP(a,b:array of real;
eps:real;
eps:real:=0.01; //- версия 1.0.1
p:integer:=10;
k:integer:=100;
m:integer:=1000):List<(real,array of real)>;
@ -716,10 +717,13 @@ type
end;
/// НОД пары чисел
class function GCD(a,b:BigInteger):BigInteger;
class function GCD(a, b: BigInteger): BigInteger;
begin
while b<>0 do (a,b):=(b,a mod b);
Result:=a
if a < 0 then
a := -a;
while b <> 0 do
(a, b) := (b, a mod b);
Result := a
end;
public

View file

@ -81,7 +81,9 @@ end;
function CreateFile<T>(fname: string): file of T;
begin
if ContainsReferenceTypes(typeof(T)) then
begin
raise new System.SystemException(GetTranslation(BAD_TYPE_IN_TYPED_FILE));
end;
var res: file of T;
PABCSystem.Rewrite(res, fname);
Result := res;

View file

@ -2358,7 +2358,7 @@ const
EOLN_FOR_TEXT_WRITEOPENED = 'Функция Eoln не может быть вызвана для текстового файла, открытого на запись!!Eoln function can''t be called for file, opened on writing';
SEEKEOF_FOR_TEXT_WRITEOPENED = 'Функция SeekEof не может быть вызвана для текстового файла, открытого на запись!!SeekEof function can''t be called for file, opened on writing';
SEEKEOLN_FOR_TEXT_WRITEOPENED = 'Функция SeekEoln не может быть вызвана для текстового файла, открытого на запись!!SeekEoln function can''t be called for file, opened on writing';
BAD_TYPE_IN_RUNTIMESIZEOF = 'Bad Type in RunTimeSizeOf';
BAD_TYPE_IN_RUNTIMESIZEOF = 'Для типизированных файлов нельзя указывать тип элементов, являющийся ссылочным или содержащий ссылочные поля!!Bad Type in RunTimeSizeOf';
PARAMETER_MUST_BE_GREATER_EQUAL_0 = 'Параметр должен быть >= 0!!Parameter must be >= 0';
PARAMETER_MUST_BE_GREATER_0 = 'Параметр должен быть > 0!!Parameter must be > 0';
PARAMETER_MUST_BE_GREATER_1 = 'Параметр должен быть > 1!!Parameter must be > 1';
@ -2369,6 +2369,12 @@ const
ARR_LENGTH_MUST_BE_MATCH_TO_MATR_SIZE = 'Размер одномерного массива не согласован с размером двумерного массива!!The 1-dim array length does not match 2-dim array size';
INITELEM_COUNT_MUST_BE_EQUAL_TO_MATRIX_ELEMS_COUNT = 'Количество инициализирующих элементов не совпадает с количеством элементов матрицы!!The number of elements in init list must be equal to the number of elements in matrix';
TYPED_FILE_CANBE_OPENED_IN_SINGLEBYTE_ENCODING_ONLY = 'При открытии типизированного файла можно указывать только однобайтную кодировку!!Typed file can be opened in single byte encoding only';
BAD_ROW_INDEX = 'Один из элементов массива RowIndex выходит за пределы индексов строк двумерного массива!!One of the elements of RowIndex array is out of range of 2-dim array row indexes';
BAD_COL_INDEX = 'Один из элементов массива ColIndex выходит за пределы индексов столбцов двумерного массива!!One of the elements of ColIndex array is out of range of 2-dim array column indexes';
BAD_ROW_INDEX_FROM = 'FromRow выходит за пределы индексов строк двумерного массива!!FromRow is out of range of 2-dim array row indexes';
BAD_ROW_INDEX_TO = 'ToRow выходит за пределы индексов строк двумерного массива!!ToRow is out of range of 2-dim array row indexes';
BAD_COL_INDEX_FROM = 'FromCol выходит за пределы индексов строк двумерного массива!!FromCol is out of range of 2-dim array column indexes';
BAD_COL_INDEX_TO = 'ToCol выходит за пределы индексов строк двумерного массива!!ToCol is out of range of 2-dim array column indexes';
// -----------------------------------------------------
// WINAPI
@ -9923,6 +9929,61 @@ begin
act(Self[i, j],i,j);
end;
function InR(Self: integer; a,b: integer): boolean;
begin
Result := (a <= Self) and (Self <= b);
end;
/// Возвращает срез двумерного массива. RowIndex и ColIndex задают срезаемые строки и столбцы
function MatrSlice<T>(Self: array[,] of T; RowIndex: array of integer; ColIndex: array of integer): array[,] of T; extensionmethod;
begin
if RowIndex = nil then
raise new System.ArgumentNullException('RowIndex');
if ColIndex = nil then
raise new System.ArgumentNullException('ColIndex');
if RowIndex.Any(i->not InR(i,0,Self.RowCount-1)) then
raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_ROW_INDEX),new Exception);
if ColIndex.Any(i->not InR(i,0,Self.ColCount-1)) then
raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_COL_INDEX),new Exception);
Result := new T[RowIndex.Length, ColIndex.Length];
var r := 0;
foreach var ir in RowIndex do
begin
var c := 0;
foreach var jc in ColIndex do
begin
Result[r, c] := Self[ir, jc];
c += 1;
end;
r += 1;
end
end;
/// Возвращает срез двумерного массива между строками FromRow, ToRow и столбцами FromCol, ToCol
function MatrSlice<T>(Self: array[,] of T; FromRow, ToRow, FromCol, ToCol: integer): array[,] of T; extensionmethod;
begin
if not InR(FromRow,0,Self.RowCount-1) then
raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_ROW_INDEX_FROM),new Exception);
if not InR(ToRow,0,Self.RowCount-1) then raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_ROW_INDEX_TO),new Exception);
if not InR(FromCol,0,Self.ColCount-1) then
raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_COL_INDEX_FROM),new Exception);
if not InR(ToCol,0,Self.ColCount-1) then
raise new System.ArgumentOutOfRangeException(GetTranslation(BAD_COL_INDEX_TO),new Exception);
Result := new T[ToRow-FromRow+1, ToCol-FromCol+1];
var r := 0;
for var ir:=FromRow to ToRow do
begin
var c := 0;
for var jc:=FromCol to ToCol do
begin
Result[r, c] := Self[ir, jc];
c += 1;
end;
r += 1;
end
end;
// -----------------------------------------------------
//>> Фиктивная секция YYY - не удалять! # YYY
// -----------------------------------------------------

View file

@ -1184,6 +1184,8 @@ var
OnKeyPress: procedure(ch: char);
/// Событие изменения размера графического окна
OnResize: procedure;
/// Событие перерисовки графического окна. Параметр dt обозначает количество миллисекунд с момента последнего вызова OnDrawFrame
OnDrawFrame: procedure(dt: real) := nil;
// -----------------------------------------------------
//>> Функции пересечения# Intersection functions
@ -1207,15 +1209,16 @@ procedure __InitModule__;
procedure __FinalizeModule__;
//{{{--doc: Конец секции 2 }}}
procedure BeginFrameBasedAnimation(Draw: procedure; frate: integer := 61);
//procedure BeginFrameBasedAnimation(Draw: procedure; frate: integer := 61);
//procedure BeginFrameBasedAnimationTime(DrawT: procedure(dt: real));
procedure BeginFrameBasedAnimationTime(DrawT: procedure(dt: real));
implementation
procedure BeginFrameBasedAnimation(Draw: procedure; frate: integer) := GraphWPF.BeginFrameBasedAnimation(Draw,frate);
//procedure BeginFrameBasedAnimation(Draw: procedure; frate: integer) := GraphWPF.BeginFrameBasedAnimation(Draw,frate);
procedure BeginFrameBasedAnimationTime(DrawT: procedure(dt: real)) := GraphWPF.BeginFrameBasedAnimationTime(DrawT);
//procedure BeginFrameBasedAnimationTime(DrawT: procedure(dt: real)) := GraphWPF.BeginFrameBasedAnimationTime(DrawT);
function RGB(r,g,b: byte) := Color.Fromrgb(r, g, b);
function ARGB(a,r,g,b: byte) := Color.FromArgb(a, r, g, b);
@ -1540,6 +1543,19 @@ procedure SystemOnResize(sender: Object; e: SizeChangedEventArgs) :=
if OnResize<>nil then
OnResize();
var LastUpdatedTimeWPF := new System.TimeSpan(integer.MinValue);
procedure RenderFrameWPF(o: Object; e: System.EventArgs);
begin
if OnDrawFrame<>nil then
begin
var e1 := RenderingEventArgs(e).RenderingTime;
var dt := e1 - LastUpdatedTimeWPF;
LastUpdatedTimeWPF := e1;
OnDrawFrame(dt.Milliseconds/1000);
end;
end;
procedure __InitModule;
begin
AdditionalInit := procedure ->
@ -1554,6 +1570,8 @@ begin
MainWindow.TextInput += SystemOnKeyPress;
MainWindow.SizeChanged += SystemOnResize;
CompositionTarget.Rendering += RenderFrameWPF;
Objects := new ObjectsType;
Window := GraphWPF.Window;
GraphWindow := GraphWPF.GraphWindow;

Binary file not shown.

Binary file not shown.