[Biblioteca] Vector2, Vector3, Vector4, Point + MathHelper |
Bolodefchoco « Sénateur » 1519259880000
| 1 | ||
- Vetores são tabelas de uma única dimensão, porém representam vector2(x, y), vector3(x, y, z), vector4(x, y, z, w) Como já é convencional, x e y são, respectivamente, horizontal e vertical. z simboliza a profundidade e w é uma coordenada homogêneas. Funções para todos os Vetores Note que vectorX simboliza ambos vector2, vector3 e vector4 APENAS nesta pequena documentação. • vectorX.barycentric ( value1, value2, value3, amount1, amount2 ) Retorna a coordenada de um ponto definido por um triângulo e 2 baricentros normalizados. Parâmetros: - value1 (VectorX) : Coordenada 1 do triângulo - value2 (VectorX) : Coordenada 2 do triângulo - value3 (VectorX) : Coordenada 3 do triângulo - amount1 (Number) : Coordenada do baricentro 1 - amount2 (Number) : Coordenada do baricentro 2 Retorna: (VectorX) na descrição • vectorX.catmullRom ( value1, value2, value3, amount ) Realiza uma interpolação Catmull-Rom usando as posições especificadas. Parâmetros: - value1 (VectorX) : A posição 1 na interpolação - value2 (VectorX) : A posição 2 na interpolação - value3 (VectorX) : A posição 3 na interpolação - amount (Number) : Fator de ponderação Retorna: (VectorX) uma posição que é o resultado da interpolação • vectorX.clamp ( value, max, min ) Faz com que o valor fique num intervalo especificado, sem excedê-los. Parâmetros: - value (VectorX) : Valor a ser normalizado - min (VectorX) : O valor minimo que #value pode ter - max (VectorX) : O valor máximo que #value pode ter Retorna: (VectorX) #value normalizado • vectorX.hermite ( value1, tangent1, value2, tangent2, amount ) Realiza uma interpolação Hermite. Parâmetros: - value1 (VectorX) : A posição 1 na interpolação - tangent1 (VectorX) : A tangente 1 na interpolação - value2 (VectorX) : A posição 2 na interpolação - tangent2 (VectorX) : A tangente 2 na interpolação - amount (Number) : Fator de ponderação Retorna: (VectorX) uma posição que é o resultado da interpolação • vectorX.lerp ( value1, value2, amount ) Realiza uma interpolação linear entre dois valores. Parâmetros: - value1 (VectorX) : A posição 1 na interpolação - value2 (VectorX) : A posição 2 na interpolação - amount (Number) : Valor entre 0 e 1 que indica a influência de #value2 na função Retorna: (VectorX) valor interpolado • vectorX.smoothStep ( value1, value2, amount ) Realiza uma interpolação cúbica. Parâmetros: - value1 (VectorX) : A posição 1 na interpolação - value2 (VectorX) : A posição 2 na interpolação - amount (Number) : Peso da interpolação Retorna: (VectorX) valor interpolado • vectorX.distance ( value1, value2 ) Retorna a distância entre as coordenadas. Parâmetros: - value1 (VectorX) : Coordenada 1 - value2 (VectorX) : Coordenada 2 Retorna: (VectorX) na descrição • vectorX.distanceSquared ( value1, value2 ) Retorna a distância(²) quadrada entre as coordenadas. Parâmetros: - value1 (VectorX) : Coordenada 1 - value2 (VectorX) : Coordenada 2 Retorna: (VectorX) na descrição • vectorX.dot ( value1, value2 ) Retorna o produto escalar entre dois vetores. Parâmetros: - value1 (VectorX) : Coordenada 1 - value2 (VectorX) : Coordenada 2 Retorna: (VectorX) na descrição • vectorX.equals ( value1, value2 ) Verifica se os dois vetores são iguais. Parâmetros: - value1 (VectorX) : Vetor 1 - value2 (VectorX) : Vetor 2 Retorna: (Boolean) igualdade dos vetores • vectorX.max ( value1, value2 ) Retorna o maior vetor. Parâmetros: - value1 (VectorX) : Vetor 1 - value2 (VectorX) : Vetor 2 Retorna: (VectorX) na descrição • vectorX.min ( value1, value2 ) Retorna o menor vetor. Parâmetros: - value1 (VectorX) : Vetor 1 - value2 (VectorX) : Vetor 2 Retorna: (VectorX) na descrição • vectorX.normalize ( value ) Normaliza o vetor para que seu tamanho seja 1 e aponte para a mesma direção do vetor passado. Parâmetros: - value (VectorX) : Vetor Retorna: (VectorX) vetor unitário com a mesma direção de #value • vectorX.add ( value1, value2 ) Retorna a soma de dois vetores. Parâmetros: - value1 (VectorX) : Vetor 1 - value2 (VectorX) : Vetor 2 Retorna: (VectorX) na descrição • vectorX.subtract ( value1, value2 ) Retorna a subtração de dois vetores. Parâmetros: - value1 (VectorX) : Vetor 1 - value2 (VectorX) : Vetor 2 Retorna: (VectorX) na descrição • vectorX.multiply ( value1, value2 ) Retorna o produto de dois vetores. Parâmetros: - value1 (VectorX) : Vetor 1 - value2 (VectorX) : Vetor 2 Retorna: (VectorX) na descrição • vectorX.divide ( value1, value2 ) Retorna a divisão de dois vetores. Parâmetros: - value1 (VectorX) : Vetor 1 - value2 (VectorX) : Vetor 2 Retorna: (VectorX) na descrição • vectorX.negate ( value ) Retorna o vetor negativo. Parâmetros: - value1 (VectorX) : Vetor Retorna: (VectorX) na descrição Funções do objeto Note que vectorX simboliza ambos vector2, vector3 e vector4 APENAS nesta pequena documentação. • objeto:equals ( value ) Verifica se o objeto é igual ao vetor #value. Parâmetros: - value (VectorX) : Vetor de comparação Retorna: (Boolean) igualdade dos vetores • [vector2] object:toPoint ( ) Transforma um vector2 em point. Retorna: (Point) o vector2 transformado em point • object:length ( ) Retorna o tamanho do vetor. Retorna: (VectorX) na descrição • object:lengthSquared ( ) Retorna o tamanho do vetor ao quadrado. Retorna: (VectorX) na descrição • object:normalize ( ) Normaliza o objeto para que seu tamanho seja 1 e aponte para a mesma direção do vetor passado. Retorna: (VectorX) vetor unitário com a mesma direção de :object: Vector2 Propriedades • vector2.one Valor: (Vector2) vector2(1, 1) • vector2.unitX Valor: (Vector2) vector2(1, 0) • vector2.unitY Valor: (Vector2) vector2(0, 1) • vector2.zero Valor: (Vector2) vector2(0, 0) Funções • vector2.reflect ( vector, normal ) Retorna o vetor de reflexão. Parâmetros: - value (Vector2) : Vetor - normal (Vector2) : Normal do Vetor Retorna: (Vector2) na descrição Vector3 Propriedades • vector3.backward Valor: (Vector3) vector3(0, 0, 1) • vector3.down Valor: (Vector3) vector3(0, -1, 0) • vector3.forward Valor: (Vector3) vector3(0, 0, -1) • vector3.left Valor: (Vector3) vector3(-1, 0, 0) • vector3.one Valor: (Vector3) vector3(1, 1, 1) • vector3.right Valor: (Vector3) vector3(-1, 0, 0) • vector3.unitX Valor: (Vector3) vector3(1, 0, 0) • vector3.unitY Valor: (Vector3) vector3(0, 1, 0) • vector3.unitZ Valor: (Vector3) vector3(0, 0, 1) • vector3.up Valor: (Vector3) vector3(0, 1, 0) • vector3.zero Valor: (Vector3) vector3(0, 0, 0) Funções • vector3.cross ( value1, value2 ) Retorna o produto vetorial entre os vetores. Parâmetros: - value1 (Vector3) : Vetor 1 - value2 (Vector3) : Vetor 2 Retorna: (Vector3) na descrição • vector3.reflect ( vector, normal ) Retorna o vetor de reflexão. Parâmetros: - value (Vector3) : Vetor - normal (Vector3) : Normal do Vetor Retorna: (Vector3) na descrição Vector4 Propriedades • vector4.one Valor: (Vector4) vector4(1, 1, 1, 1) • vector4.unitX Valor: (Vector4) vector4(1, 0, 0, 0) • vector4.unitY Valor: (Vector4) vector4(0, 1, 0, 0) • vector4.unitZ Valor: (Vector4) vector4(0, 0, 1, 0) • vector4.unitW Valor: (Vector4) vector4(0, 0, 0, 1) • vector4.zero Valor: (Vector4) vector4(0, 0, 0, 0) ~Para criar um vetor, utilize Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 local vetor = vector2(10, 20) -- vetor.x = 10, vetor.y = 20 ~Você também pode: Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 -- Somar - Point simboliza uma tabela de uma única dimensão, semelhante ao vector2, porém sem as funções complementares. ~ Você também pode tratar matematicamente os Point como os vector2. Funções do objeto • objeto:equals ( value ) Verifica se o objeto é igual ao point #value. Parâmetros: - value (Point) : Ponto de comparação Retorna: (Boolean) igualdade dos pontos • object:toVector2 ( ) Transforma um point em vector2. Retorna: (Vector2) o point transformado em vector2 Point Propriedades • point.zero Valor: (Point) point(0, 0) Funções • point.equals ( value1, value2 ) Verifica se os dois pontos são iguais. Parâmetros: - value1 (Point) : Ponto 1 - value2 (Point) : Ponto 2 Retorna: (Boolean) igualdade dos vetores Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 local exemplo = enums { Testando tudo Vec2 Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 vec1 = vector2(1) Vec3 Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 vec1 = vector3(12, 5, 7) Vec4 Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 vec1 = vector4(12, 5, 7, 7) Dernière modification le 1519260420000 |
Bolodefchoco « Sénateur » 1519260000000
| 1 | ||
Você talvez possa se perguntar onde usar isso no TFM. Um exemplo seria fazer uma textarea perseguir algum rato. Full XY Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 local size = 25 |
Hugotitas « Citoyen » 1519260180000
| 1 | ||
Parabéns bolo(Nem vi o tópico mas valeu o esforço.) |
Squalleze « Citoyen » 1519405560000
| 1 | ||
nossa, q ótimo, n sei como conseguir viver até hoje sem esse script, super util, vou usar no meu dia dia |
Bolodefchoco « Sénateur » 1519405740000
| 1 | ||
Squalleze a dit : reportei por provocação |
Gamedroit « Citoyen » 1519535280000
| 1 | ||
não achei isto útil, ainda mais no tfm que não vai mudar nada já que as coordenadas continuam atualizando a 500 ms |
Bolodefchoco « Sénateur » 1519561680000
| 1 | ||
Contistente3 a dit : Dá pra usar pra muita coisa. É uma lib do C#, da plataforma que usei no meu jogo, achei interessante trazer pra cá. Tem o enum também que cria enumeradores constantes e os mathhelper que são bem úteis pra cálculo de movimento e posição |