| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Written in the D programming language.
- /**
- Copyright: Copyright Felix 'Zoadian' Hufnagel 2014-.
- License: $(WEB http://www.gnu.org/licenses/lgpl.html, LGPLv3).
- Authors: $(WEB zoadian.de, Felix 'Zoadian' Hufnagel)
- */
- module three.primitives.point;
- import std.traits;
- struct Vector(size_t D, T) if(D > 0 && isNumeric!T) {
- public:
- T[D] data;
-
- alias data this;
- this(T[] data...) {
- this.data = data;
- }
-
- static if(D >= 1) {
- T x() @safe @property const {
- return data[0];
- }
-
- void x(T t) @safe @property {
- data[0] = t;
- }
- }
-
- static if(D >= 2) {
- T y() @safe @property const {
- return data[1];
- }
-
- void y(T t) @safe @property {
- data[1] = t;
- }
- }
-
- static if(D >= 3) {
- T z() @safe @property const {
- return data[2];
- }
-
- void z(T t) @safe @property {
- data[2] = t;
- }
- }
- }
- alias Vector2f = Vector!(2, float);
- alias Vector3f = Vector!(3, float);
- alias Point2f = Vector2f;
- alias Point3f = Vector3f;
|