Giter VIP home page Giter VIP logo

Comments (3)

xibyte avatar xibyte commented on May 14, 2024

Yes you are right. It would be really helpful, thanks for your help.

I think we can approach the problem following way, but I am not sure and may be it's too naive, correct me if I am wrong:

  1. Divide all bounding curves of the face to some ranges taking into account their curvatures. Each range should represent approximately a flat part of the curve. I guess that exactly what method verb.Tess.rationalCurveAdaptiveSample does.
  2. Then transfer all the ranges to the parametric space of the face.
  3. We'll get some sort of '2D polygons' on the parametric space which we can triangulate. Then do that triangulation on the face's parametric space. We'll get the triangles but it's not enough. The problem is that the such triangles don't take into account the curvature of the enclosed area.
  4. To solve this problem we need to evaluate derivative at the middle of the triangle and at the each triangle's vertices. If the derivatives are about the same it is a good triangle and covers not curving area and it should go to the result set of the triangulation. Otherwise we split triangle to three sub-triangles(using 3 vertices and the center) and repeat step 4 for the sub-triangles.
  5. However, if a triangle goes through any knot in any direction(u or v) we also need to split the triangle by the knots line before doing the curvature analysis. Otherwise such triangle can cover a "local hump" which we never know about.

PS. Actually the whole nurbs infrastructure is in very bad and awful shape and there are a lot of weird code to workaround the limitations of the current boolean algorithm(which currently can work only on polyhedra). So I am planing to rewrite everything related to the NURBSes or at least the parts related to nurbs solids construction and performing the boolean operations as soon as I come up with robust boolean algorithm.

Thanks!

from jsketcher.

iamnotstone avatar iamnotstone commented on May 14, 2024

OK, thanks for your comments. I'll try to follow your advices, and try them out.I'll let you know if it works.
And I want to join in your next nurbs-based project. I am once a mechanical engineer and now changed to a cad/cae soft engineer. I have one year of coding experience based on opencascad , freecad and threejs .And I am familiar with c++, javascript, python and mongodb. I can be a good assistant for you.

from jsketcher.

mmiscool avatar mmiscool commented on May 14, 2024

Issue is very old. Overcome by events.

from jsketcher.

Related Issues (20)

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.