Plane
This function transforms a plane from one space to another.
Syntax
- static Plane Plane(const Plane& plane, Entity* src, Entity* dst)
- static Plane Plane(const Plane& plane, const Mat4& src, const Mat4& dst)
- static Plane Plane(const float x, const float y, const float z, const float w, Entity* src, Entity* dst)
- static Plane Plane(const float x, const float y, const float z, const float w, const Mat4& src, const Mat4& dst)
Parameters
- plane: the plane to be transformed.
- x: the X component of the normal to be transformed.
- y: the Y component of the normal to be transformed.
- z: the Z component of the normal to be transformed.
- w: the W component of the normal to be transformed.
- src: the source entity or 4x4 matrix to transform the plane from.
- dst: the destination entity or 4x4 matrix to transform the plane to.
Returns
Returns the transformed plane.
Remarks
Due to the ambiguity of this command (the function and class of one member are both called "Plane") the function should always be called so that the individual components of the input plane are specific, when programming in Lua script. Use the third and fourth overloads of the function shown above in Lua.
Example
#include "Leadwerks.h"
using namespace Leadwerks;
Model* model = NULL;
int main(int argc, const char *argv[])
{
Leadwerks::Window* window = Leadwerks::Window::Create();
Context* context = Context::Create(window);
World* world = World::Create();
Camera* camera = Camera::Create();
camera->Move(0, 0, -3);
Light* light = DirectionalLight::Create();
light->SetRotation(35, 35, 0);
//Create a model
model = Model::Box();
model->SetColor(0.0, 0.0, 1.0);
model->SetPosition(3, 0, 0);
while (true)
{
//Close the window to end the program
if (window->KeyHit(Key::Escape) || window->Closed()) return false;
Leadwerks::Time::Update();
world->Update();
world->Render();
//We're going to transform the plane (1,0,0,0) from global space to the model's local space
//Because the model is positioned at (3,0,0) the plane will be at (1,0,0,3) in local space (relative to the model).
Plane p = Plane(1, 0, 0, 0);
p = Transform::Plane(p, NULL, model);
context->SetBlendMode(Blend::Alpha);
context->DrawText(p.ToString(), 2, 2);
context->SetBlendMode(Blend::Solid);
context->Sync(false);
}
return 0;
}