OnDrawFrame в WPFObjects
OnDrawFrame убрали из GraphWPF - там только BeginFrameBasedAnimationTime Правки в NumLibABC MatrSlice в PABCSystem.pas Версия 3.5.1 накопительная
This commit is contained in:
parent
bce9925230
commit
d17edbd8b4
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%MINOR%=5
|
||||
%REVISION%=2241
|
||||
%COREVERSION%=0
|
||||
%REVISION%=2247
|
||||
%COREVERSION%=1
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -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> Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó äâóìåðíîãî ìàññèâà</td></tr>
|
||||
<tr><td><code><b>function</b> Indices<T>(Self: <b>array</b> [,] <b>of</b> T; cond: T -> boolean): <b>sequence </b> <b>of</b> (integer, integer);</code>
|
||||
<br> Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ, óäîâëåòâîðÿþùèõ çàäàííîìó óñëîâèþ</td></tr>
|
||||
<tr><td><code><b>function</b> MatrSlice<T>(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> Âîçâðàùàåò ñðåç äâóìåðíîãî ìàññèâà. RowIndex è ColIndex çàäàþò ñðåçàåìûå ñòðîêè è ñòîëáöû</td></tr>
|
||||
<tr><td><code><b>function</b> MatrSlice<T>(Self: array[,] <b>of</b> T; FromRow, ToRow, FromCol, ToCol: integer): array[,] <b>of</b> T;</code>
|
||||
<br> Âîçâðàùàåò ñðåç äâóìåðíîãî ìàññèâà ìåæäó ñòðîêàìè FromRow, ToRow è ñòîëáöàìè FromCol, ToCol</td></tr>
|
||||
<tr><td><code><b>function</b> Print<T>(Self: <b>array</b> [,] <b>of</b> T; w: integer := 4): <b>array</b> [,] <b>of</b> T;</code>
|
||||
<br> Âûâîä äâóìåðíîãî ìàññèâà, 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>
|
||||
|
|
|
|||
|
|
@ -149,6 +149,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -132,6 +132,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -152,6 +152,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -132,6 +132,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -143,6 +143,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -157,6 +157,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -142,6 +142,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -149,6 +149,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -124,6 +124,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -142,6 +142,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -149,6 +149,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -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> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -125,6 +125,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -138,6 +138,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -142,6 +142,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -149,6 +149,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -138,6 +138,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -149,6 +149,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -136,6 +136,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -161,6 +161,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -148,6 +148,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -152,6 +152,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -135,6 +135,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -143,6 +143,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -143,6 +143,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -142,6 +142,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -141,6 +141,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -146,6 +146,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -149,6 +149,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -152,6 +152,8 @@
|
|||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå (xx,yy,zz)</td></tr>
|
||||
<tr><td><code><b>function</b> MoveTo(p: Point3D): Object3D;</code>
|
||||
<br> Ïåðåìåùàåò 3D-îáúåêò ê òî÷êå p</td></tr>
|
||||
<tr><td><code><b>function</b> PositionAfterTime(dt: real): Point3D;</code>
|
||||
<br> Áóäóùàÿ ïîçèöèÿ 3D-îáúåêòà ïî ïðîøåñòâèè âðåìåíè dt</td></tr>
|
||||
<tr><td><code><b>function</b> Rotate(axis: Vector3D; angle: real): Object3D;</code>
|
||||
<br> Ïîâîðà÷èâàåò îáúåêò íà óãîë angle âîêðóã îñè axis</td></tr>
|
||||
<tr><td><code><b>function</b> RotateAt(axis: Vector3D; angle: real; center: Point3D): Object3D;</code>
|
||||
|
|
|
|||
|
|
@ -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> Çàãîëîâîê ïðîñòðàíñòâà îòîáðàæåíèÿ</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> Íå îòîáðàæàòü êîîðäèíàòíóþ ñèñòåìó, êîîðäèíàòíóþ ñåòêó è ViewCube</td></tr>
|
||||
<tr><td><code><b>procedure</b> Save(fname: string);</code>
|
||||
<br> Ñîõðàíÿåò ñîäåðæèìîå 3d-îêíà â ôàéë</td></tr>
|
||||
</tr></table>
|
||||
</body></HTML>
|
||||
|
|
@ -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> Ñîáûòèå ïåðåðèñîâêè ãðàôè÷åñêîãî 3D-îêíà.Èíèöèàëèçèðóåòñÿ ïðîöåäóðîé ñ âåùåñòâåííûì ïàðàìåòðîì dt - âðåìåíåì, ïðîøåäøèì ñ ìîìåíòà ïîñëåäíåãî îáíîâëåíèÿ ýêðàíà</td></tr>
|
||||
<tr><td><code>OnInit: <b>procedure</b>;</code>
|
||||
<br> Событие инициализации объектов графического окна. Используется чтобы объекты не прорисовывались до конца инициализации</td></tr>
|
||||
<tr><td><code>OnKeyDown: <b>procedure</b>(k: Key);</code>
|
||||
<br> Ñîáûòèå íàæàòèÿ êëàâèøè</td></tr>
|
||||
<tr><td><code>OnKeyPress: <b>procedure</b>(ch: char);</code>
|
||||
|
|
|
|||
|
|
@ -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> Возвращает точку на ближайшем 3D-объекте, который пересекает луч, выпущенный из камеры и проходящий через точку (x,y) экрана. Если пересечения нет, возвращается точка BadPoint</td></tr>
|
||||
<tr><td><code><b>function</b> NearestPointOnLine(Line: Ray3D; x, y: real): Point3D;</code>
|
||||
<br> Возвращает ближайшую точку на линии Line с лучом, выпущенным из камеры и проходящем через точку (x,y) экрана</td></tr>
|
||||
<tr><td><code><b>function</b> ParametricTrajectory(a,b: real; N: integer; fun: real->Point3D): <b>sequence </b> <b>of</b> Point3D;</code>
|
||||
<br> Ñîçäà¸ò òðàåêòîðèþ â âèäå ìàññèâà òî÷åê, çàäàííóþ ïàðàìåòðè÷åñêè. Ôóíêöèÿ fun îòîáðàæàåò ïàðàìåòð t íà êîîðäèíàòû òî÷êè â ïðîñòðàíñòâå</td></tr>
|
||||
<tr><td><code><b>function</b> PointOnPlane(Plane: Plane3D; x, y: real): Point3D;</code>
|
||||
<br> Возвращает точку на плоскости Plane, которую пересекает невизуальный луч, выпущенный из камеры и проходящий через точку (x,y) экрана</td></tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -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> cedure Redraw(p: ()->());</td></tr>
|
||||
<tr><td><code>/// Âîçâðàùàåò öâåò ïî êðàñíîé, çåëåíîé è ñèíåé ñîñòàâëÿþùåé è ïàðàìåòðó ïðîçðà÷íîñòè (â äèàïàçîíå 0..255);</code>
|
||||
<br> ction RGB(r, g, b: byte): Color;</td></tr>
|
||||
<tr><td><code>/// Âîçâðàùàåò ñåðûé öâåò ñ èíòåíñèâíîñòüþ b;</code>
|
||||
<br> ction ARGB(a, r, g, b: byte): Color;</td></tr>
|
||||
<tr><td><code>/// Âîçâðàùàåò ñëó÷àéíûé öâåò;</code>
|
||||
<br> ction GrayColor(b: byte): Color;</td></tr>
|
||||
<tr><td><code>/// Âîçâðàùàåò ïîëíîñòüþ ïðîçðà÷íûé öâåò;</code>
|
||||
<br> ction RandomColor: Color;</td></tr>
|
||||
<tr><td><code>/// Âîçâðàùàåò òî÷êó ñ êîîðäèíàòàìè (x,y);</code>
|
||||
<br> ction EmptyColor: Color;</td></tr>
|
||||
<tr><td><code>/// Âîçâðàùàåò ïðÿìîóãîëüíèê ñ êîîðäèíàòàìè óãëà (x,y), øèðèíîé w è âûñîòîé h;</code>
|
||||
<br> ction Pnt(x, y: real): Point;</td></tr>
|
||||
<tr><td><code>/// Âîçâðàùàåò 3D-òî÷êó ñ êîîðäèíàòàìè (x,y,z);</code>
|
||||
<br> ction Rect(x, y, w, h: real): GRect;</td></tr>
|
||||
<tr><td><code>/// Âîçâðàùàåò 3D-âåêòîð ñ êîîðäèíàòàìè (x,y,z);</code>
|
||||
<br> ction P3D(x, y, z: real): Point3D;</td></tr>
|
||||
<tr><td><code>/// Âîçâðàùàåò 3D-ðàçìåð ñ êîîðäèíàòàìè (x,y,z);</code>
|
||||
<br> 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> Âîçâðàùàåò öâåò ïî êðàñíîé, çåëåíîé è ñèíåé ñîñòàâëÿþùåé è ïàðàìåòðó ïðîçðà÷íîñòè (â äèàïàçîíå 0..255)</td></tr>
|
||||
<tr><td><code><b>function</b> EmptyColor: Color;</code>
|
||||
<br> Âîçâðàùàåò ïîëíîñòüþ ïðîçðà÷íûé öâåò</td></tr>
|
||||
<tr><td><code><b>function</b> GrayColor(b: byte): Color;</code>
|
||||
<br> Âîçâðàùàåò ñåðûé öâåò ñ èíòåíñèâíîñòüþ b</td></tr>
|
||||
<tr><td><code><b>function</b> P3D(x, y, z: real): Point3D;</code>
|
||||
<br> Âîçâðàùàåò 3D-òî÷êó ñ êîîðäèíàòàìè (x,y,z)</td></tr>
|
||||
<tr><td><code><b>function</b> Pnt(x, y: real): Point;</code>
|
||||
<br> Âîçâðàùàåò òî÷êó ñ êîîðäèíàòàìè (x,y)</td></tr>
|
||||
<tr><td><code><b>function</b> RandomColor: Color;</code>
|
||||
<br> Âîçâðàùàåò ñëó÷àéíûé öâåò</td></tr>
|
||||
<tr><td><code><b>function</b> Rect(x, y, w, h: real): GRect;</code>
|
||||
<br> Âîçâðàùàåò ïðÿìîóãîëüíèê ñ êîîðäèíàòàìè óãëà (x,y), øèðèíîé w è âûñîòîé h</td></tr>
|
||||
<tr><td><code><b>procedure</b> Redraw(p: ()->());</code>
|
||||
<br> Ïðîöåäóðà óñêîðåíèÿ âûâîäà. Îáíîâëÿåò ýêðàí ïîñëå âñåõ èçìåíåíèé</td></tr>
|
||||
<tr><td><code><b>function</b> RGB(r, g, b: byte): Color;</code>
|
||||
<br> Âîçâðàùàåò öâåò ïî êðàñíîé, çåëåíîé è ñèíåé ñîñòàâëÿþùåé (â äèàïàçîíå 0..255)</td></tr>
|
||||
<tr><td><code><b>function</b> Sz3D(x, y, z: real): Size3D;</code>
|
||||
<br> Âîçâðàùàåò 3D-ðàçìåð ñ êîîðäèíàòàìè (x,y,z)</td></tr>
|
||||
<tr><td><code><b>function</b> V3D(x, y, z: real): Vector3D;</code>
|
||||
<br> Âîçâðàùàåò 3D-âåêòîð ñ êîîðäèíàòàìè (x,y,z)</td></tr>
|
||||
</table>
|
||||
</body></HTML>
|
||||
|
|
@ -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> Îñü OY</td></tr>
|
||||
<tr><td><code>ZAxis: Ray3D;</code>
|
||||
<br> Îñü OZ</td></tr>
|
||||
<tr><td><code>ZeroVector: Vector3D;</code>
|
||||
<br> Íóëåâîé âåêòîð</td></tr>
|
||||
</table>
|
||||
</body></HTML>
|
||||
|
|
@ -24,6 +24,6 @@
|
|||
<tr><td><code>OnResize: <b>procedure</b>;</code>
|
||||
<br> Ńîáűňčĺ čçěĺíĺíč˙ đŕçěĺđŕ ăđŕôč÷ĺńęîăî îęíŕ</td></tr>
|
||||
<tr><td><code>OnDrawFrame: <b>procedure</b>(dt: real);</code>
|
||||
<br> <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> Событие перерисовки графического окна.Инициализируется процедурой с вещественным параметром dt - временем, прошедшим с момента последнего обновления экрана</td></tr>
|
||||
</table>
|
||||
</body></HTML>
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
<tr><td><code><b>function</b> Rect(x,y,w,h: real): GRect;</code>
|
||||
<br> Âîçâðàùàåò ïðÿìîóãîëüíèê ñ êîîðäèíàòàìè óãëà (x,y), øèðèíîé w è âûñîòîé h</td></tr>
|
||||
<tr><td><code><b>procedure</b> Redraw(d: ()->());</code>
|
||||
<br> Процедура ускорения вывода нескольких графических команд</td></tr>
|
||||
<br> Процедура ускорения вывода. Обновляет экран после всех изменений</td></tr>
|
||||
<tr><td><code><b>function</b> RGB(r,g,b: byte): Color;</code>
|
||||
<br> Âîçâðàùàåò öâåò ïî êðàñíîé, çåëåíîé è ñèíåé ñîñòàâëÿþùåé (â äèàïàçîíå 0..255)</td></tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
<tr><td><code><b>function</b> Rect(x,y,w,h: real): GRect;</code>
|
||||
<br> Âîçâðàùàåò ïðÿìîóãîëüíèê ñ êîîðäèíàòàìè óãëà (x,y), øèðèíîé w è âûñîòîé h</td></tr>
|
||||
<tr><td><code><b>procedure</b> Redraw(p: ()->());</code>
|
||||
<br> Процедура ускорения вывода нескольких графических команд</td></tr>
|
||||
<br> Процедура ускорения вывода. Обновляет экран после всех изменений</td></tr>
|
||||
<tr><td><code><b>function</b> RGB(r,g,b: byte): Color;</code>
|
||||
<br> Âîçâðàùàåò öâåò ïî êðàñíîé, çåëåíîé è ñèíåé ñîñòàâëÿþùåé (â äèàïàçîíå 0..255)</td></tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.5.0.2241
|
||||
3.5.1.2247
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.5.0.2241'
|
||||
!define VERSION '3.5.1.2247'
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -1,4 +1,8 @@
|
|||
unit OpenGLABC;
|
||||
|
||||
///
|
||||
///Модуль, зарезервированный для высокоуровневой оболочки модуля OpenGL
|
||||
///
|
||||
unit OpenGLABC;
|
||||
|
||||
interface
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
// -----------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
// -----------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -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.
Loading…
Reference in a new issue