Skip to content
An Algebraic Surface eXPlorer
C++ Cuda Makefile Other
Branch: master
Clone or download
juergenboehm Completely rewrote parser for polynomials, changed parser.h, parser.cpp
Introduced a table driven templated lexer, which takes as template
argument the type of token used and a concise templated ParserExpr that
uses a template parameter T for the domain of expressions to be
constructed from the parsed text.
Latest commit fd6cf6c Dec 2, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.settings First commit Apr 19, 2018
cuda Moved streamline generation to ProcPoly, small cleanups. Nov 22, 2019
images First commit Apr 19, 2018
.cproject First commit Apr 19, 2018
.project First commit Apr 19, 2018
Makefile Removed dependencies on globals by making free standing functions pri… Nov 21, 2019
Makefile.good First commit Apr 19, 2018
README.md Added libs.txt with info on necessary libraries for build. Made data Nov 21, 2019
Regular_grid_xp_2.h First commit Apr 19, 2018
asxp-antares.conf First commit Apr 19, 2018
asxp.conf Completely rewrote parser for polynomials, changed parser.h, parser.cpp Dec 2, 2019
asxp.cpp minor change: introduced zrast_to_z and z_to_zrast for consistency in Nov 27, 2019
asxp.h Moved streamline generation to ProcPoly, small cleanups. Nov 22, 2019
asxp.pro
asxp_arrays.h First commit Apr 19, 2018
attic.txt First commit Apr 19, 2018
clipper.cpp First commit Apr 19, 2018
clipper.hpp First commit Apr 19, 2018
configfile.cpp First commit Apr 19, 2018
configfile.h First commit Apr 19, 2018
eigen.cpp First commit Apr 19, 2018
eigen.h First commit Apr 19, 2018
global_headers.h Refactored paint method of PaintHelper. Nov 20, 2019
glwidget.cpp First commit Apr 19, 2018
glwidget.h
gtssurface.cpp First commit Apr 19, 2018
gtssurface.h First commit Apr 19, 2018
libnames.txt Added libs.txt with info on necessary libraries for build. Made data Nov 21, 2019
libnames1.txt Added libs.txt with info on necessary libraries for build. Made data Nov 21, 2019
libs.txt
main.cpp Completely rewrote parser for polynomials, changed parser.h, parser.cpp Dec 2, 2019
mainwindow.cpp Moved streamline generation to ProcPoly, small cleanups. Nov 22, 2019
mainwindow.h First commit Apr 19, 2018
openscad.cpp First commit Apr 19, 2018
openscad.h First commit Apr 19, 2018
parser.cpp Completely rewrote parser for polynomials, changed parser.h, parser.cpp Dec 2, 2019
parser.h Completely rewrote parser for polynomials, changed parser.h, parser.cpp Dec 2, 2019
pimage.h First commit Apr 19, 2018
pointlist.cpp First commit Apr 19, 2018
pointlist.h First commit Apr 19, 2018
pointraster.cpp First commit Apr 19, 2018
pointraster.h First commit Apr 19, 2018
poly.cpp Removed nvars from template of Poly<C>, moved it into constructors Nov 28, 2019
poly.h Removed nvars from template of Poly<C>, moved it into constructors Nov 28, 2019
procpoly.cpp Removed nvars from template of Poly<C>, moved it into constructors Nov 28, 2019
procpoly.h Removed nvars from template of Poly<C>, moved it into constructors Nov 28, 2019
qmakeit First commit Apr 19, 2018
roots.cpp First commit Apr 19, 2018
roots.h First commit Apr 19, 2018
screenwidget.cpp First commit Apr 19, 2018
screenwidget.h Refactored paint method of PaintHelper. Nov 20, 2019
setlib
sliders.cpp First commit Apr 19, 2018
sliders.h First commit Apr 19, 2018
streamline.cpp First commit Apr 19, 2018
streamline.h First commit Apr 19, 2018
streamplot.cpp Eliminated global dependencies in ProcPoly, removed debug output in Nov 21, 2019
streamplot.h Introduced central perspective in pimage.cu. Makefile in cuda cleaned… Nov 16, 2019
test.data
tests.cpp Completely rewrote parser for polynomials, changed parser.h, parser.cpp Dec 2, 2019
tests.h Completely rewrote parser for polynomials, changed parser.h, parser.cpp Dec 2, 2019
timing.cpp
timing.h First commit Apr 19, 2018
triangularize.cpp
triangularize.h First commit Apr 19, 2018

README.md

asxp

What asxp does

It runs under Linux (Ubuntu 16.04 LTS on my machine) and generates perspective views of algebraic surfaces via raycasting:

You define a certain polynomial f(x, y, z, a, b) in the variables x, y, z and parameters a and b in the configuration file of asxp.

Then you can go into a visualizing window for the surface, where the position of the mouse determines the parameters a and b as a0 and b0 and the surface plotted is the (two dimensional projection of the) zero-set

f(x, y, z, a0, b0) = 0

in 3d-space with coordinates x, y, z.

In total it does

  • create living views of an algebraic surface under parameter change,
  • produce Floyd-Steinberg dithered grayscale images of surfaces,
  • create images which are cross hatched along the principal directions of curvature,
  • display silhouette images,
  • triangularize surfaces, smoothen and reduce the triangularization,
  • produce STL models ready for 3D printing (with the help of an auxiliary program, renderstl).

Look at the video

The current version runs with CUDA support and uses the parallel processing power of the graphic card:

asxp demo video

A drawing

This drawing is done with principal curvature crossfield hatch: cross hatch

Building asxp

Introduction

At the moment I give only a sketchy explanation for experts who know how to extract the necessary dependency informations from the makefiles and can change the makefiles accordingly. If you need more detailed information how to build asxp please write me an e-mail.

Prerequisites

Generally asxp depends on Qt, boost, CGAL, GNU GTS, CUDA.

Look at libs.txt for a way to find the necessary dependencies of asxp on an Ubuntu system with apt-file.

Steps

Suppose you want to build asxp in your directory software anywhere in your filesystem.

cd software
git clone https://www.github.com/juergenboehm/asxp_npr2.git
cd asxp_npr2

Modify paths and variable values in asxp.pro and in cuda/Makefile if necessary.

./qmakeit
cd cuda
make
cd ..
make

At the moment, the cuda library cuda/lib/libasxp.a must always be built separately.

Author

Jürgen Böhm - see www.aviduratas.de

You can’t perform that action at this time.