Zum Inhalt

vec3

Quelle: base/tealdef/scripts/vec3.d.tl

Hinweise

Typen der reinen Lua-Bibliothek für 3D-Vektoren /scripts/vec3.tl (Vec3Serialized). Die Vektoren sind gewöhnliche Tabellen {x = ..., y = ..., z = ...} mit +, -, * (Zahl mal Vektor) und / (Vektor durch Zahl). Konstruktionsskripte nutzen sie zusammen mit /scripts/mat4.tl. Du lädst sie mit local vec3 = ug_require "/scripts/vec3.tl" as Vec3Serialized.

Vec3iSerialized

record global base/tealdef/scripts/vec3.d.tl:3

global record Vec3iSerialized

Hinweise

Namensraum des ganzzahligen 3D-Vektortyps Vec3i.

Vec3iSerialized.Vec3i

record base/tealdef/scripts/vec3.d.tl:4

record Vec3i

Hinweise

3D-Vektor mit ganzzahligen Komponenten als einfache Tabelle {x = ..., y = ..., z = ...}.

Felder

Name Typ Beschreibung
x integer X-Komponente.
y integer Y-Komponente.
z integer Z-Komponente (in Weltkoordinaten die Höhe).

Vec3Serialized

record global base/tealdef/scripts/vec3.d.tl:11

global record Vec3Serialized

Laden: local vec3 = require "::/scripts/vec3.tl" as Vec3Serialized

Hinweise

Die 3D-Vektorbibliothek, die ug_require "/scripts/vec3.tl" zurückgibt, und der Namensraum ihres Typs Vec3.

Funktionen

new(x : number, y : number, z : number) : Vec3 base/tealdef/scripts/vec3.d.tl:25

Aufruf: vec3.new(…)

Hinweise

Erzeugt einen 3D-Vektor mit Rechenoperatoren.

Parameter Typ Beschreibung
x number X-Komponente.
y number Y-Komponente.
z number Z-Komponente.

Rückgabe Vec3: Der neue Vektor.

Beispiel

-- from base/content/scripts/scripts/construction/street_util_serialized.tl
local normalizedXYTangent = vec3.normalize(vec3.new(p1.x - p0.x, p1.y - p0.y, 0))
Im Basisspiel verwendet: 1.041-mal in 85 Dateien

base/content/base/base/metadataanimationutil.lua:79

return { times = { 0 }, transfs = { transf.scale(vec3.new(1,1,1)) }, interpolation = "NEAREST" }
base/content/depots/rail/rail/rail_depot.script.lua:360
transform = transf.rotZTransl(4.71238898,vec3.new(-21, 0, 0.00000))
base/content/depots/rail/rail/rail_maint_station.script.lua:174
transf = transf.transl(vec3.new(0, -7, 0)),
base/content/depots/road/road/road_depot/road_depot.script.lua:216
transf = transf.transl(vec3.new(0, -30.0, 0)),
base/content/depots/road/road/road_maint_station.script.lua:259
transf = transf.transl(vec3.new(0, -depth-4, 0)),
base/content/depots/road/road/tram_depot/tram_depot.script.lua:247
transf = transf.transl(vec3.new(-1.64813, -35.4153, 0)),
… und 79 weitere Dateien.

degToRad(dx : number, dy : number, dz : number) : Vec3 base/tealdef/scripts/vec3.d.tl:26

Aufruf: vec3.degToRad(…)

Hinweise

Rechnet drei Winkel von Grad in Bogenmaß um und gibt sie als Vektor zurück.

Parameter Typ Beschreibung
dx number Winkel in Grad, landet in x.
dy number Winkel in Grad, landet in y.
dz number Winkel in Grad, landet in z.

Rückgabe Vec3: Vektor mit den Winkeln im Bogenmaß.

Im Basisspiel verwendet: 34-mal in 7 Dateien

base/content/landmarks/hq/hq/headquarter.script.tl:337

transf = mat4.rotZYXTransl(vec3.degToRad(orientation and orientation * 90 or 0, 0, 0), center),
base/content/stations/air/air/airfield.script.lua:261
transf = transf.rotZYXTransl(vec3.degToRad(0.0, 0.0, 0.0),  vec3.new( 140, 0, 0))
base/content/stations/air/air/airport.script.lua:172
transf = transf.rotZYXTransl(vec3.degToRad(0, 0, 0), vec3.new(airportLimitEnd - 5, runway1YCoord, 0 )),
base/content/stations/air/air/heliport/heliport.script.lua:414
transf = transf.rotZYXTransl(vec3.degToRad(0.0, 0.0, 0.0), vec3.new(-26.8, 37.6, 0)),
base/content/stations/rail/rail/modular_station/modular_station.script.lua:534
transf = transf.rotZYXTransl(vec3.degToRad(0.0, 0.0, 0.0), vec3.new(i * platformWidth + offset, j * platformLength, 0)),
base/content/warehouses/warehouses/modules.script.lua:29
local transf2 = transf.rotZYXTransl(vec3.degToRad(0, 0, 0), center)
… und 1 weitere Dateien.

add(v1 : Vec3, v2 : Vec3) : Vec3 base/tealdef/scripts/vec3.d.tl:28

Aufruf: vec3.add(…)

Hinweise

Gibt v1 + v2 zurück.

Rückgabe Vec3

Im Basisspiel verwendet: 14-mal in 5 Dateien

base/content/infrastructure/street_construction/street_construction/street_constructions.script.lua:47

local pm = vec3.add(
base/content/mission/mission/mission_task_util.tl:194
local pos = vec3.mul(0.5, vec3.add(bbox.min, bbox.max))
base/content/scripts/scripts/construction/constructionutil.lua:475
local fence_point = vec3.sub(vec3.add(vec3.new(xStart, yStart, zStart), vec3.mul(build_fence, fenceVectorSegment)), vec3.mul(0.5, fenceVectorSegment))
base/content/stations/rail/rail/modular_station/modular_station.script.lua:692
local tf1 = transf.transl(vec3.add(pos, vec3.new(0, j * platformLength + k * 10 + 5, 0)))
base/content/stations/water/water/modules.script.lua:894
center = vec3.add(center, vec3.new(0.0, 0.0, zOffs))

sub(v1 : Vec3, v2 : Vec3) : Vec3 base/tealdef/scripts/vec3.d.tl:29

Aufruf: vec3.sub(…)

Hinweise

Gibt v1 - v2 zurück.

Rückgabe Vec3

Im Basisspiel verwendet: 7-mal in 5 Dateien

base/content/infrastructure/street_construction/street_construction/street_constructions.script.lua:49

vec3.mul(0.125, vec3.sub(q0, q1))
base/content/mission/mission/mission_task_util.tl:224
center = center + vec3.mul((r - radius) / d, vec3.sub(c2, center))
base/content/scripts/scripts/construction/constructionutil.lua:475
local fence_point = vec3.sub(vec3.add(vec3.new(xStart, yStart, zStart), vec3.mul(build_fence, fenceVectorSegment)), vec3.mul(0.5, fenceVectorSegment))
base/content/scripts/scripts/construction/street_util_serialized.tl:23
local q = vec3.sub(p1, p0)
base/content/stations/rail/rail/modular_station/modular_station.script.lua:684
local pos = vec3.sub(mainBuildingPosition, vec3.new(minDist, 0, 0))

mul(f : number, v : Vec3) : Vec3 base/tealdef/scripts/vec3.d.tl:30

Aufruf: vec3.mul(…)

Hinweise

Gibt den Vektor v mit der Zahl f skaliert zurück.

Rückgabe Vec3

Im Basisspiel verwendet: 20-mal in 6 Dateien

base/content/infrastructure/street_construction/street_construction/street_constructions.script.lua:43

q0 = vec3.mul(scale, q0)
base/content/mission/mission/mission_task_util.tl:194
local pos = vec3.mul(0.5, vec3.add(bbox.min, bbox.max))
base/content/scripts/scripts/construction/constructionutil.lua:475
local fence_point = vec3.sub(vec3.add(vec3.new(xStart, yStart, zStart), vec3.mul(build_fence, fenceVectorSegment)), vec3.mul(0.5, fenceVectorSegment))
base/content/scripts/scripts/construction/laneutil.lua:50
q0 = vec3.mul(scale, q0)
base/content/scripts/scripts/construction/street_util_serialized.tl:38
local q = vec3.mul(approxLen, normalizedXYTangent)
dlcs/urbangames_deluxe_upgrade_pack/content/animal/animal/animal.script.lua:15
local randomPos = vec3.mul(randomLen, vec)

div(v : Vec3, d : number) : Vec3 base/tealdef/scripts/vec3.d.tl:31

Aufruf: vec3.div(…)

Hinweise

Gibt den Vektor v zurück, jede Komponente durch d geteilt.

Rückgabe Vec3

dot(v1 : Vec3, v2 : Vec3) : number base/tealdef/scripts/vec3.d.tl:33

Aufruf: vec3.dot(…)

Hinweise

Skalarprodukt v1.x * v2.x + v1.y * v2.y + v1.z * v2.z.

Rückgabe number

cross(v1 : Vec3, v2 : Vec3) : Vec3 base/tealdef/scripts/vec3.d.tl:34

Aufruf: vec3.cross(…)

Hinweise

Kreuzprodukt v1 × v2 (rechtshändig).

Rückgabe Vec3

length(v : Vec3) : number base/tealdef/scripts/vec3.d.tl:39

Aufruf: vec3.length(…)

Get the length (magnitude) of the vector.

Parameter Typ Beschreibung
v Vec3 vector

Rückgabe number: length of the vector

Im Basisspiel verwendet: 3-mal in 3 Dateien

base/content/industries/industryutil.lua:334

local length = vec3.length(vec3.new( curve[2][1] - curve[1][1], curve[2][2] - curve[1][2], curve[2][3] - curve[1][3] ))
base/content/infrastructure/street_construction/street_construction/street_constructions.script.lua:22
local length = vec3.length(dir)
base/content/scripts/scripts/construction/constructionutil.lua:466
local fenceVectorLength = vec3.length(fenceVector)

distance(v1 : Vec3, v2 : Vec3) : number base/tealdef/scripts/vec3.d.tl:44

Aufruf: vec3.distance(…)

Get the distance between two vectors.

Parameter Typ Beschreibung
v1 Vec3 first vector
v2 Vec3 second vector

Rückgabe number: distance between the vectors

Im Basisspiel verwendet: 7-mal in 5 Dateien

base/content/industries/fieldutil.lua:269

if vec3.distance(p, positions[j]) < 4 then
base/content/infrastructure/street_construction/street_construction/street_constructions.script.lua:38
local length = vec3.distance(p0, p1)
base/content/mission/mission/mission_task_util.tl:197
radius = 0.5 * vec3.distance(bbox.min, bbox.max) + ((radiusOffset ~= nil and radiusOffset) or 0)
base/content/scripts/scripts/construction/laneutil.lua:46
local length = vec3.distance(vec3.new(points[j+0][1], points[j+0][2], points[j+0][3]), vec3.new(points[j+3][1], points[j+3][2],points[j+3][3]))
base/content/scripts/scripts/construction/street_util_serialized.tl:36
local approxLen = vec3.distance(p0, p1)

distance2(v1 : Vec3, v2 : Vec3) : number base/tealdef/scripts/vec3.d.tl:49

Aufruf: vec3.distance2(…)

Get the squared distance between two vectors.

Parameter Typ Beschreibung
v1 Vec3 first vector
v2 Vec3 second vector

Rückgabe number: squared distance between the vectors

normalize(v : Vec3) : Vec3 base/tealdef/scripts/vec3.d.tl:54

Aufruf: vec3.normalize(…)

Normalize the vector (make it unit length).

Parameter Typ Beschreibung
v Vec3 vector to normalize

Rückgabe Vec3: normalized vector

Im Basisspiel verwendet: 7-mal in 3 Dateien

base/content/infrastructure/street_construction/street_construction/street_constructions.script.lua:35

local q0 = vec3.normalize(t0)
base/content/scripts/scripts/construction/laneutil.lua:44
local q0 = vec3.normalize(vec3.new(tangent1[1], tangent1[2], tangent1[3]))
base/content/scripts/scripts/construction/street_util_serialized.tl:37
local normalizedXYTangent = vec3.normalize(vec3.new(p1.x - p0.x, p1.y - p0.y, 0))

normalizeWithFallback(v : Vec3, f : Vec3) : Vec3 base/tealdef/scripts/vec3.d.tl:59

Aufruf: vec3.normalizeWithFallback(…)

Normalize the vector with a fallback if zero length.

Parameter Typ Beschreibung
v Vec3 vector to normalize
f Vec3 fallback vector

Rückgabe Vec3: normalized vector or fallback

Im Basisspiel verwendet: 2-mal in 1 Datei

dlcs/urbangames_deluxe_upgrade_pack/content/animal/animal/animal.script.lua:13

vec = vec3.normalizeWithFallback(vec, vecFallback)

angleUnit(v1 : Vec3, v2 : Vec3) : number base/tealdef/scripts/vec3.d.tl:65

Aufruf: vec3.angleUnit(…)

Get the angle between two unit vectors.

Parameter Typ Beschreibung
v1 Vec3 first unit vector
v2 Vec3 second unit vector

Rückgabe number: angle in radians

Im Basisspiel verwendet: 3-mal in 3 Dateien

base/content/infrastructure/street_construction/street_construction/street_constructions.script.lua:39

local angle = vec3.angleUnit(q0, q1)
base/content/scripts/scripts/construction/laneutil.lua:47
local angle = vec3.angleUnit(q0, q1)
base/content/scripts/scripts/construction/street_util_serialized.tl:59
local angle = vec3.angleUnit(q0, q1)

angle(v1 : Vec3, v2 : Vec3) : number base/tealdef/scripts/vec3.d.tl:70

Aufruf: vec3.angle(…)

Get the angle between two vectors.

Parameter Typ Beschreibung
v1 Vec3 first vector
v2 Vec3 second vector

Rückgabe number: angle in radians

xyAngle(v : Vec3) : number base/tealdef/scripts/vec3.d.tl:74

Aufruf: vec3.xyAngle(…)

Get the angle in the XY plane.

Parameter Typ Beschreibung
v Vec3 vector

Rückgabe number: angle in radians

Im Basisspiel verwendet: 2-mal in 1 Datei

base/content/scripts/scripts/construction/constructionutil.lua:479

transf = transf.rotZTransl(vec3.xyAngle(fenceVector) + (angle or 0), fence_point),

toArray(v : Vec3) : Table3 base/tealdef/scripts/vec3.d.tl:79

Aufruf: vec3.toArray(…)

Convert vector to an array of three numbers.

Parameter Typ Beschreibung
v Vec3 vector

Rückgabe Table3: array with x, y, z components

Im Basisspiel verwendet: 16-mal in 2 Dateien

base/content/scripts/scripts/construction/collider_util_serialized.tl:17

result.params.halfExtents = vec3.toArray(halfExtents)
base/content/scripts/scripts/construction/street_util_serialized.tl:21
local s0 = vec3.toArray(p0)

fromArray(t : Table3) : Vec3 base/tealdef/scripts/vec3.d.tl:83

Aufruf: vec3.fromArray(…)

Create vector from an array of three numbers.

Parameter Typ Beschreibung
t Table3 array with x, y, z components

Rückgabe Vec3: vector

Im Basisspiel verwendet: 1-mal in 1 Datei

base/content/scripts/scripts/construction/constructionutil.lua:336

points[#points + 1] = vec3.fromArray(point)

print(v : Vec3) : string base/tealdef/scripts/vec3.d.tl:88

Aufruf: vec3.print(…)

Convert vector to a string representation.

Parameter Typ Beschreibung
v Vec3 vector

Rückgabe string: string representation

Vec3Serialized.Table3

record base/tealdef/scripts/vec3.d.tl:12

record Table3 is {number}

of lenght 3

Im Basisspiel verwendet: 2-mal in 1 Datei

base/content/scripts/scripts/vec3.tl:95

vec3_util.toArray = function(v : Vec3Serialized.Vec3) : Vec3Serialized.Table3

Vec3Serialized.Vec3

record base/tealdef/scripts/vec3.d.tl:14

record Vec3

Hinweise

3D-Vektor als einfache Tabelle {x = ..., y = ..., z = ...}. Vektoren aus new (und aus den Operatoren) haben eine Metatabelle, deshalb funktionieren v1 + v2, v1 - v2, f * v und v / d.

Im Basisspiel verwendet: 100-mal in 7 Dateien

base/content/landmarks/hq/hq/headquarter.script.tl:314

slotHeight : number, orientation : integer, shift : Vec3Serialized.Vec3, variant : integer)
base/content/mission/mission/mission_task_util.tl:159
min : Vec3Serialized.Vec3
base/content/scripts/scripts/construction/collider_util_serialized.tl:6
collider_util_serialized.createBox = function(center : Vec3Serialized.Vec3, halfExtents : Vec3Serialized.Vec3) : ColliderUtilSerialized.Collider
base/content/scripts/scripts/construction/street_util_serialized.tl:19
p0 : Vec3Serialized.Vec3, p1 : Vec3Serialized.Vec3,
base/content/scripts/scripts/mat4.tl:94
mat4_util.transl = function(t : Vec3Serialized.Vec3) : Mat4Serialized.Mat4
base/content/scripts/scripts/vec3.tl:3
vec3_util.new = function(x : number, y : number, z : number) : Vec3Serialized.Vec3
… und 1 weitere Dateien.

Felder

Name Typ Beschreibung
x number X-Komponente.
y number Y-Komponente.
z number Z-Komponente (zeigt in Welt- und Modellkoordinaten nach oben).

Funktionen

metamethod __add(v1 : Vec3, v2 : Vec3) : Vec3 base/tealdef/scripts/vec3.d.tl:19

Hinweise

Komponentenweise Summe v1 + v2.

Rückgabe Vec3

metamethod __sub(v1 : Vec3, v2 : Vec3) : Vec3 base/tealdef/scripts/vec3.d.tl:20

Hinweise

Komponentenweise Differenz v1 - v2.

Rückgabe Vec3

metamethod __mul(f : number, v : Vec3) : Vec3 base/tealdef/scripts/vec3.d.tl:21

Hinweise

Multiplikation mit einem Skalar, f * v. Die Zahl muss links stehen.

Rückgabe Vec3

metamethod __div(v : Vec3, d : number) : Vec3 base/tealdef/scripts/vec3.d.tl:22

Hinweise

Teilt jede Komponente durch eine Zahl, v / d.

Rückgabe Vec3