CS-184: Computer GraphicsLecture #12: Curves and Surfaces Prof. James O’BrienUniversity of California, BerkeleyV2008-S-12-1.012TodayGeneral curve and surface representationsSplines and other polynomial bases23Geometry RepresentationsConstructive Solid Geometry (CSG)ParametricPolygonsSubdivision surfacesImplicit SurfacesPoint-based SurfaceNot always clear distinctionsi.e. CSG done with implicits34Geometry RepresentationsObject made by CSGConverted to polygons45Geometry RepresentationsObject made by CSGConverted to polygonsConverted to implicit surface56Geometry RepresentationsacmTransactionson GraphicsOctober 2002Volume 21 Number 4CSG on implicit surfaces67Geometry RepresentationsPoint-based surface descriptionsOhtake, et al., SIGGRAPH 200378Geometry RepresentationsSubdivision surface(different levels of refinement)Images from Subdivision.org89Geometry RepresentationsVarious strengths and weaknessesEase of use for designEase/speed for renderingSimplicitySmoothnessCollision detectionFlexibility (in more than one sense)Suitability for simulationmany others...910Parametric Representationsx = x(u)x ∈ "nu ∈ "x = x(u)u ∈ "2u, v ∈ "u, v, w ∈ "u ∈ "3x = x(u, v, w)Curves:Surfaces:x = x(u, v)x ∈ "nx = x(u)Volumes:x ∈ "nand so on...Note: a vector function is really n scalar functions1011Same curve/surface may have multiple formulaeParametric Rep. Non-unique-1 0 1 2 3-10123-1 0 1 2 3-10123x(u) = [u, u]x(u) = [u3, u3]1112Simple Differential GeometryTangent to curveTangents to surfaceNormal of surfaceAlso: curvature, curve normals, curve bi-normal, others...Degeneracies: or t(u) =∂x∂u!!!!!!!!!utu(u, v) =∂x∂u!!!!!!!!!u,vtv(u, v) =∂x∂v!!!!!!!!!u,v∂x/∂u = 0tu× tv= 0ˆn =tu× tv||tu× tv||1213DiscretizationArbitrary curves have an uncountable number of parameters-1 0 1 2 3-10123i.e. specify function value at all points on real number line1314DiscretizationArbitrary curves have an uncountable number of parametersPick complete set of basis functionsPolynomials, Fourier series, etc.Truncate set at some reasonable pointFunction represented by the vector (list) ofThe may themselves be vectorsx(u) =∞!i=0ciφi(u)x(u) =3!i=0ciφi(u) =3!i=0ciuicicix(u) =3!i=0ciφi(u)1415Polynomial BasisPower Basisx(u) =d!i=0ciuix(u) = C · PdC = [c0, c1, c2, . . . , cd]Pd= [1, u, u2, . . . , ud]The elements of are linearly independant! i.e. no good approximationPduk!≈!i!=kciuiSkipping something would lead to bad results... odd stiffness1516Specifying a Curveu0u1tu(u0)tu(u1)x(u0)x(u1)Given desired values (constraints) how do we determine the coefficients for cubic power basis?u0= 0 u1= 1For now, assume 1617Specifying a Curvetu(u0)tu(u1)x(u0)x(u1)Given desired values (constraints) how do we determine the coefficients for cubic power basis?01x(0) = c0= x0x(1) =!ci= x1x!(0)= c1= x!0x!(1)=!i ci= x!11718Specifying a Curvetu(u0)tu(u1)x(u0)x(u1)Given desired values (constraints) how do we determine the coefficients for cubic power basis?01x0x1x!0x!1=1 0 0 01 1 1 10 1 0 00 1 2 3·c0c1c2c3p = B · c1819Specifying a Curvetu(u0)tu(u1)x(u0)x(u1)Given desired values (constraints) how do we determine the coefficients for cubic power basis?01c = βH· pβH= B−1=1 0 0 00 0 1 0−3 3 −2 12 −2 1 11920Specifying a CurveGiven desired values (constraints) how do we determine the coefficients for cubic power basis?c = βH· pβH= B−1=1 0 0 00 0 1 0−3 3 −2 12 −2 1 1tu(u0)tu(u1)x(u0)x(u1)01x(u) = P3· c = P3βHp=1 + 0u − 3u2+ 2u30 + 0u + 3u2− 2u30 + 1u − 2u2+ 1u30 + 0u − 1u2+ 1u3p2021Specifying a CurveGiven desired values (constraints) how do we determine the coefficients for cubic power basis?c = βH· ptu(u0)tu(u1)x(u0)x(u1)01x(u) =1 + 0u − 3u2+ 2u30 + 0u + 3u2− 2u30 + 1u − 2u2+ 1u30 + 0u − 1u2+ 1u3px(u) =3!i=0pibi(u)Hermite basis functions2122Specifying a CurveGiven desired values (constraints) how do we determine the coefficients for cubic power basis?tu(u0)tu(u1)x(u0)x(u1)01x(u) =3!i=0pibi(u)Hermite basis functionsProbably not to scale.2223Hermite BasisSpecify curve by Endpoint valuesEndpoint tangents (derivatives)Parameter interval is arbitrary (most times)Don’t need to recompute basis functionsThese are cubic HermiteCould do construction for any odd degree derivatives at end points(d − 1)/22324Cubic BézierSimilar to Hermite, but specify tangents indirectlyx0= p0x1= p3x!0= 3(p1− p0)x!1= 3(p3− p2)Note: all the control points are points in space, no tangents.2425Cubic BézierSimilar to Hermite, but specify tangents indirectlyx0= p0x1= p3x!0= 3(p1− p0)x!1= 3(p3− p2)1 0 0 01 1 1 10 1 0 00 1 2 3c =1 0 0 00 0 0 1−3 3 0 00 0 −3 3pc =1 0 0 0−3 3 0 03 −6 3 0−1 3 −3 1pc = βZp2526Cubic BézierPlot of Bézier basis functions0.2 0.4 0.6 0.810.20.40.60.812627Changing BasesPower basis, Hermite, and Bézier all are still just cubic polynomialsThe
View Full Document