SciProgCentre / kmath

Kotlin mathematics extensions library
657 stars 55 forks source link

Geometry projections #88

Open altavir opened 4 years ago

altavir commented 4 years ago

Project 3D objects into the 2D plane and add automatic transformations for 2D objects in planes into 3D objects.

Probably need to introduce a special kind of Plane with bound Cartesian reference frame.

janheinrichmerker commented 4 years ago

Then if course, we should add principle component analysis for reducing arbitrary N-dimensional vectors to arbitrary M-dimensional (M<N) vectors

altavir commented 4 years ago

@heinrichreimer It would be good to discuss the API design. Right now I need it for optics simulation, so I will probably make something quick and dirty. Please look into the basic geometry space API I've introduced in latest dev commits and say, how you think it should be changed. Right now, it is not quite good for arbitrary dimensions.

janheinrichmerker commented 4 years ago

Just mentioning this as I am currently learning PCA in university, and it's a systematic approach to reducing dimensions. No need to replace your API, we can track arbitrary dimensional reduction separately.

altavir commented 4 years ago

Actually, I do want to make it in arbitrary dimensions and make 2D and 3D as specific cases. Possibly topology in the fututre. Just the way it is done for general algebra. What is complicated is an API design that it will make it possible without sacrificing user experience or performance in critical places. I was thinking about doing it via introducing reference frame concept. I would really appreciate discussion about how to better do that here or in kotlin slack.