Zum Inhalt

vec2

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

Hinweise

Typen der reinen Lua-Bibliothek für 2D-Vektoren /scripts/vec2.tl (Vec2Serialized). Anders als api.type.Vec2f der Engine sind diese Vektoren gewöhnliche Lua-Tabellen {x = ..., y = ...} mit Rechen-Metamethoden. Deshalb kannst du sie im Skriptzustand und in Konstruktionsergebnissen speichern. Du lädst sie mit local vec2 = ug_require "/scripts/vec2.tl" as Vec2Serialized.

Vec2iSerialized

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

global record Vec2iSerialized

Hinweise

Namensraum des ganzzahligen 2D-Vektortyps Vec2i.

Vec2iSerialized.Vec2i

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

record Vec2i

Hinweise

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

Felder

Name Typ Beschreibung
x integer X-Komponente.
y integer Y-Komponente.

Vec2Serialized

record global base/tealdef/scripts/vec2.d.tl:10

global record Vec2Serialized

Laden: local vec2 = ug_require "::/scripts/vec2.tl" as Vec2Serialized

Hinweise

Die 2D-Vektorbibliothek, die ug_require "/scripts/vec2.tl" zurückgibt, und der Namensraum ihres Typs Vec2.

Funktionen

new(x : number, y : number) : Vec2 base/tealdef/scripts/vec2.d.tl:23

Aufruf: vec2.new(…)

Hinweise

Erzeugt einen 2D-Vektor mit Rechenoperatoren.

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

Rückgabe Vec2: Der neue Vektor.

Im Basisspiel verwendet: 26-mal in 7 Dateien

base/content/climates/climates/gen/mapgenutil.tl:11

local newStart = vec2.new(math_util.randf(bounds.min.x, bounds.max.x), math_util.randf(bounds.min.y, bounds.max.y))
base/content/climates/climates/gen/rivermapgenutil.tl:147
local rot = vec2.mul(math_util.mapClamp(math.abs(theta), 0, 2.3, 1, 5.0), vec2.new(tg.x * math.cos(theta) - tg.y * math.sin(theta), tg.x * math.sin(theta) + tg.
base/content/gui/gui/node_editor/layer_nodes.script.tl:313
return vec2.new(s1 * inputs.lakeWidth.value * 180, s2 * inputs.lakeWidth.value * 180), s * 50
base/content/landmarks/hq/hq/headquarter.script.tl:10
local GridSize = vec2.new(8, 8)
base/content/stations/rail/rail/modular_station/modular_station.script.lua:631
local mainBuildingSize = vec2.new(5, 12)
base/content/stations/water/water/harbor_modular.script.lua:113
local gridSize = vec2.new(12.5, 12.5)
… und 1 weitere Dateien.

add(v1 : Vec2, v2 : Vec2) : Vec2 base/tealdef/scripts/vec2.d.tl:25

Aufruf: vec2.add(…)

Hinweise

Gibt v1 + v2 zurück.

Rückgabe Vec2

Im Basisspiel verwendet: 12-mal in 2 Dateien

base/content/climates/climates/gen/mapgenutil.tl:22

local secondPos = vec2.add(newStart, vec2.mul(samplePointDistance, dirVec))
base/content/climates/climates/gen/rivermapgenutil.tl:154
nrml = vec2.add(vec2.new(nrml.x, nrml.y), vec2.mul(of, vec2.new(tg.x, tg.y)))

sub(v1 : Vec2, v2 : Vec2) : Vec2 base/tealdef/scripts/vec2.d.tl:26

Aufruf: vec2.sub(…)

Hinweise

Gibt v1 - v2 zurück.

Rückgabe Vec2

Im Basisspiel verwendet: 5-mal in 1 Datei

base/content/climates/climates/gen/mapgenutil.tl:52

local dist = vec2.sub(center, start.pos )

mul(f : number, v : Vec2) : Vec2 base/tealdef/scripts/vec2.d.tl:27

Aufruf: vec2.mul(…)

Hinweise

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

Rückgabe Vec2

Im Basisspiel verwendet: 14-mal in 2 Dateien

base/content/climates/climates/gen/mapgenutil.tl:22

local secondPos = vec2.add(newStart, vec2.mul(samplePointDistance, dirVec))
base/content/climates/climates/gen/rivermapgenutil.tl:147
local rot = vec2.mul(math_util.mapClamp(math.abs(theta), 0, 2.3, 1, 5.0), vec2.new(tg.x * math.cos(theta) - tg.y * math.sin(theta), tg.x * math.sin(theta) + tg.

div(v : Vec2, f : number) : Vec2 base/tealdef/scripts/vec2.d.tl:28

Aufruf: vec2.div(…)

Hinweise

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

Rückgabe Vec2

Im Basisspiel verwendet: 5-mal in 2 Dateien

base/content/climates/climates/gen/mapgenutil.tl:341

local subdivVec = vec2.div(segmentVec, subdiv)
base/content/climates/climates/gen/rivermapgenutil.tl:29
table.insert(newRiver.tangents, vec2.div(river.tangents[i], nSegments))

componentwiseMul(v1 : Vec2, v2 : Vec2) : Vec2 base/tealdef/scripts/vec2.d.tl:29

Aufruf: vec2.componentwiseMul(…)

Hinweise

Gibt {x = v1.x * v2.x, y = v1.y * v2.y} zurück.

Rückgabe Vec2

Details

Das Ergebnis ist eine einfache Tabelle ohne die Operator-Metatabelle. Wenn du +/- brauchst, gib es in new.

componentwiseDiv(v1 : Vec2, v2 : Vec2) : Vec2 base/tealdef/scripts/vec2.d.tl:30

Aufruf: vec2.componentwiseDiv(…)

Hinweise

Gibt {x = v1.x / v2.x, y = v1.y / v2.y} zurück.

Rückgabe Vec2

Details

Das Ergebnis ist eine einfache Tabelle ohne die Operator-Metatabelle. Wenn du +/- brauchst, gib es in new.

length(v : Vec2) : number base/tealdef/scripts/vec2.d.tl:35

Aufruf: vec2.length(…)

Get the length (magnitude) of the vector.

Parameter Typ Beschreibung
v Vec2 vector

Rückgabe number: length of the vector

Im Basisspiel verwendet: 2-mal in 1 Datei

base/content/climates/climates/gen/mapgenutil.tl:151

table.insert(valley.tangents, vec2.mul(vec2.length(vec2.sub(position, oldPosition)), vec2.fromAngle(newDir + randomAngle)))

distance(v1 : Vec2, v2 : Vec2) : number base/tealdef/scripts/vec2.d.tl:40

Aufruf: vec2.distance(…)

Get the distance between two vectors.

Parameter Typ Beschreibung
v1 Vec2 first vector
v2 Vec2 second vector

Rückgabe number: distance between the vectors

Im Basisspiel verwendet: 3-mal in 1 Datei

base/content/climates/climates/gen/mapgenutil.tl:156

local numSegments = math.ceil(vec2.distance(positionToCheck, oldPosition) / distanceCheck) * 4

dot(v1 : Vec2, v2 : Vec2) : number base/tealdef/scripts/vec2.d.tl:45

Aufruf: vec2.dot(…)

Compute the dot product of two vectors.

Parameter Typ Beschreibung
v1 Vec2 first vector
v2 Vec2 second vector

Rückgabe number: dot product

angle(v1 : Vec2, v2 : Vec2) : number base/tealdef/scripts/vec2.d.tl:50

Aufruf: vec2.angle(…)

Get the angle between two vectors.

Parameter Typ Beschreibung
v1 Vec2 first vector
v2 Vec2 second vector

Rückgabe number: angle in radians

normalize(v : Vec2) : Vec2 base/tealdef/scripts/vec2.d.tl:55

Aufruf: vec2.normalize(…)

Normalize the vector (make it unit length).

Parameter Typ Beschreibung
v Vec2 vector to normalize

Rückgabe Vec2: normalized vector

rotate90(v : Vec2) : Vec2 base/tealdef/scripts/vec2.d.tl:59

Aufruf: vec2.rotate90(…)

Rotate the vector by 90 degrees.

Parameter Typ Beschreibung
v Vec2 vector to rotate

Rückgabe Vec2: rotated vector

lerp(v1 : Vec2, v2 : Vec2, s : number) : Vec2 base/tealdef/scripts/vec2.d.tl:65

Aufruf: vec2.lerp(…)

Linear interpolation between two vectors.

Parameter Typ Beschreibung
v1 Vec2 first vector
v2 Vec2 second vector
s number interpolation factor [0, 1]

Rückgabe Vec2: interpolated vector

Im Basisspiel verwendet: 2-mal in 1 Datei

base/content/climates/climates/gen/rivermapgenutil.tl:44

local newWidth = vec2.lerp(river.widths[i], river.widths[i+1], h)

herp(p0 : Vec2, p1 : Vec2, t0 : Vec2, t1 : Vec2, s : number) : Vec2 base/tealdef/scripts/vec2.d.tl:73

Aufruf: vec2.herp(…)

Hermite interpolation between two points with tangents.

Parameter Typ Beschreibung
p0 Vec2 start point
p1 Vec2 end point
t0 Vec2 start tangent
t1 Vec2 end tangent
s number interpolation factor [0, 1]

Rückgabe Vec2: interpolated vector

Im Basisspiel verwendet: 1-mal in 1 Datei

base/content/climates/climates/gen/rivermapgenutil.tl:40

local newPoint = vec2.herp(river.points[i], river.points[i+1], river.tangents[i], river.tangents[i+1], h)

herpPrime(p0 : Vec2, p1 : Vec2, t0 : Vec2, t1 : Vec2, s : number) : Vec2 base/tealdef/scripts/vec2.d.tl:81

Aufruf: vec2.herpPrime(…)

Derivative of Hermite interpolation.

Parameter Typ Beschreibung
p0 Vec2 start point
p1 Vec2 end point
t0 Vec2 start tangent
t1 Vec2 end tangent
s number interpolation factor [0, 1]

Rückgabe Vec2: derivative vector

Im Basisspiel verwendet: 1-mal in 1 Datei

base/content/climates/climates/gen/rivermapgenutil.tl:41

local newTangent = vec2.div(vec2.herpPrime(river.points[i], river.points[i+1], river.tangents[i], river.tangents[i+1], h), nSegments)

fromAngle(a : number) : Vec2 base/tealdef/scripts/vec2.d.tl:85

Aufruf: vec2.fromAngle(…)

Create a unit vector from an angle.

Parameter Typ Beschreibung
a number angle in radians

Rückgabe Vec2: unit vector

Im Basisspiel verwendet: 5-mal in 1 Datei

base/content/climates/climates/gen/mapgenutil.tl:20

local dirVec = vec2.fromAngle(angle)

toArray(v : Vec2) : Table2 base/tealdef/scripts/vec2.d.tl:90

Aufruf: vec2.toArray(…)

Convert vector to an array of two numbers.

Parameter Typ Beschreibung
v Vec2 vector

Rückgabe Table2: array with x and y components

fromArray(t : Table2) : Vec2 base/tealdef/scripts/vec2.d.tl:94

Aufruf: vec2.fromArray(…)

Create vector from an array of two numbers.

Parameter Typ Beschreibung
t Table2 array with x and y components

Rückgabe Vec2: vector

print(v : Vec2) : string base/tealdef/scripts/vec2.d.tl:99

Aufruf: vec2.print(…)

Convert vector to a string representation.

Parameter Typ Beschreibung
v Vec2 vector

Rückgabe string: string representation

Vec2Serialized.Table2

record base/tealdef/scripts/vec2.d.tl:11

record Table2 is {number}

of lenght 2

Im Basisspiel verwendet: 2-mal in 1 Datei

base/content/scripts/scripts/vec2.tl:116

vec2_util.toArray = function(v : Vec2Serialized.Vec2) : Vec2Serialized.Table2

Vec2Serialized.Vec2

record base/tealdef/scripts/vec2.d.tl:13

record Vec2

Hinweise

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

Im Basisspiel verwendet: 96-mal in 6 Dateien

base/content/climates/climates/gen/mapgenutil.tl:59

function data.makeRivers(valleys : {RiverResult}, config : RiverBuilderConfig, startLength : number, startPosition : Vec2Serialized.Vec2,
base/content/gui/gui/map_editor/map_editor.tl:1721
position : Vec2Serialized.Vec2
base/content/gui/gui/node_editor/layer_nodes.script.tl:241
getStartWeight = function(pos : Vec2Serialized.Vec2) : number
base/content/landmarks/hq/hq/headquarter.script.tl:86
local encodeSlotId = function(coord : Vec2Serialized.Vec2, slotType : string, orientation? : integer, variant? : integer) : integer
base/content/landmarks/hq/hq/headquarter_addon.script.tl:70
local offset = result.rotate(connector.offset as Vec2Serialized.Vec2, orientation)
base/content/scripts/scripts/vec2.tl:3
vec2_util.new = function(x : number, y : number) : Vec2Serialized.Vec2

Felder

Name Typ Beschreibung
x number X-Komponente.
y number Y-Komponente.

Funktionen

metamethod __add(v1 : Vec2, v2 : Vec2) : Vec2 base/tealdef/scripts/vec2.d.tl:17

Hinweise

Komponentenweise Summe v1 + v2.

Rückgabe Vec2

metamethod __sub(v1 : Vec2, v2 : Vec2) : Vec2 base/tealdef/scripts/vec2.d.tl:18

Hinweise

Komponentenweise Differenz v1 - v2.

Rückgabe Vec2

metamethod __mul(f : number, v : Vec2) : Vec2 base/tealdef/scripts/vec2.d.tl:19

Hinweise

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

Rückgabe Vec2

metamethod __div(v : Vec2, d : number) : Vec2 base/tealdef/scripts/vec2.d.tl:20

Hinweise

Teilt jede Komponente durch eine Zahl, v / d.

Rückgabe Vec2