Coder Social home page Coder Social logo

hasenpfote / plucker Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 2.0 73 KB

Class template for Plucker coordinates of a line.

License: Creative Commons Zero v1.0 Universal

CMake 9.41% C++ 90.37% C 0.22%
plucker-coordinates eigen cpp11 class-template header-only

plucker's Introduction

Build Status

plucker


About

  • Class template for Plücker coordinates of a line.

  • Header-only.

Compatibility

Supports C++ 11 or higher.

Compiler Version Remarks
gcc 5.5.0 or higher.
clang 7.0.0 or higher.
msvc 16.5.4 or higher.

Older versions of compilers might work as well but they are not tested.

Dependencies

usage

#include <plucker/plucker.h>

using value_type = double;
using Vector3 = plucker::Vector3<value_type>;
using Vector4 = plucker::Vector4<value_type>;
using Plucker = plucker::Plucker<value_type>;

bool has_intersection(
    const Plucker& ray,
    const Vector4& p1,
    const Vector4& p2,
    const Vector4& p3)
{
    if(ray * Plucker(p1, p2) > 0.0)
        return false;
    if(ray * Plucker(p2, p3) > 0.0)
        return false;
    if(ray * Plucker(p3, p1) > 0.0)
        return false;
    return true;
}

int main()
{
    // Plucker coordinates of a ray.
    const auto from = Vector4(0.0, 1.0, 6.0, 1.0);
    const auto to = Vector4(0.0, 1.0, 4.0, 1.0);
    const auto ray = Plucker(from, to);

    // Points of a triangle.
    // Here, the front facing of a triangle is counterclockwise.
    const auto p1 = Vector4(3.0, 0.0, -2.0, 1.0);
    const auto p2 = Vector4(0.0, 3.0, -2.0, 1.0);
    const auto p3 = Vector4(-3.0, 0.0, -2.0, 1.0);

    // Does a ray have an intersection with a triangle?
    const auto res = has_intersection(ray, p1, p2, p3);

    std::cout << "has_intersection: " << res << std::endl;  // true

    return 0;
}

References

License

This software is released under the CC0 License, see LICENSE.

plucker's People

Contributors

hasenpfote avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.