1. Field of Invention
This invention relates generally to three-dimensional shape representations and more particularly to producing a computer representation of a three-dimensional surface of an appliance for a living body
2. Description of Related Art
Prostheses, orthoses, and other support appliances are commonly produced from three-dimensional representations of a body part of a human or an animal. The three-dimensional representation may then be manipulated on a computer using a three-dimensional shape editing program to produce a modified representation of the body part. The modified representation may be used to generate instructions for controlling a carving machine that is configured to directly produce an appliance, or to produce a mold for making appliance, for example. An orthosis is an appliance that is applied externally to a body part to correct deformity, improve function, or relieve symptoms of a disease by supporting oil assisting the musculo-neuro-skeletal system. A prosthesis is an appliance that replaces a missing body part. Other appliances such as supporting seats or standing shells for supporting the body of a person having limited mobility may also be produced from modified representations of body parts.
The three-dimensional representation of the body part may be produced using a non-contact optical scanner that images the body part with a high level of accuracy. The scanner may include a laser for illuminating the body part with structured light and a video camera for capturing images of the illuminated body part. The captured images may then be processed to extract coordinates of the surface of the body part, which may be used as input coordinates to a computer for producing three-dimensional representations.
It is generally convenient to represent three-dimensional shapes of surfaces using a plurality of two-dimensional slices or planes that permit three-dimensional surface coordinates to be represented and manipulated in two-dimensions. Each surface coordinate location in the two-dimensional plane may be represented using an angle and an offset from a plane origin point. Such representations are usually satisfactory for representing generally cylindrical shapes but may not be satisfactory in representing more complex shapes.
In accordance with one aspect of the invention there is provided a method for producing a computer representation of a three-dimensional surface of an appliance for a living body. The method involves identifying a plurality of spaced apart planes intersecting the three-dimensional surface and for each plane in the plurality of spaced apart planes identifying a plurality of basis points on the plane. The basis points lie generally along a curve on the plane. The method also involves determining surface coordinate locations of a plurality of points on the plane that lie on the three-dimensional surface, each surface coordinate location being defined as an offset from the basis point, and storing the surface coordinate locations in a computer memory.
The method may involve receiving an input plurality of coordinates defining a preliminary representation of the three-dimensional surface.
The method may involve transforming the surface coordinate locations into a set of instructions operable to control a computer aided manufacturing machine to produce the appliance.
The method may involve applying a shape transformation to the surface coordinate locations to produce modified surface coordinate locations and storing the surface coordinate locations in the computer memory may involve storing the modified surface coordinate locations in the computer memory.
Identifying the plurality of spaced apart planes may involve identifying a plurality of plane coordinate frames respectively identifying locations and orientations of the plurality spaced apart planes in a three-dimensional coordinate system.
Identifying the plurality of plane coordinate frames may involve identifying origin coordinate locations of a plurality of spaced apart points along a reference curve, the reference curve having a shape that generally corresponds to a shape of the three-dimensional surface in a first general direction along the surface, and for each respective origin coordinate location, generating data defining a plane coordinate frame having an origin located at the origin coordinate location and being oriented to cause a corresponding plane defined by the plane coordinate frame to be orthogonally oriented with respect to a portion of the reference curve passing through the origin coordinate location.
The method may involve displaying a representation of the three-dimensional surface, and receiving operator input identifying control point locations defining the reference curve.
Generating the data defining the plane coordinate frame may involve generating data defining a Cartesian coordinate frame having a first axis oriented in a direction along the reference curve at the origin coordinate location and second and third axes defining the orientation of the plane.
Identifying the origin coordinate locations may involve identifying regularly spaced apart origin coordinate locations along the reference curve.
Identifying the plurality of plane coordinate frames may involve, for each of the plurality of plane coordinate frames, generating a modeling matrix having elements defining orthogonal unit vectors, the orthogonal unit vectors identifying an orientation of the plane coordinate frame, and elements defining an origin coordinate location of the plane coordinate frame.
Determining the surface coordinate locations may involve determining two-dimensional surface coordinate locations with respect to the plane coordinate frame, and transforming the two-dimensional surface coordinates into three-dimensional coordinates in the three-dimensional coordinate system using the modeling matrix.
The method may involve defining at least one basis curve located on a basis curve plane intersecting the three-dimensional surface, and subdividing the at least one basis curve to identify a plurality of points along the basis curve, and identifying the plurality of basis points on each of the planes may involve projecting respective points in the plurality of points along the basis curve onto each of the planes.
Projecting the respective points may involve at least one of interpolating between points located on at least two basis curves located on respective basis curve planes, and extrapolating from at least one point located on the at least one basis curve.
Defining the at least one basis curve located on the basis curve plane may involve defining at least one basis curve located on one of the spaced apart plurality of planes.
Defining the basis curve may involve defining control points of a B-spline curve located in the plane.
Each the basis curve plane may be defined by a basis curve plane coordinate frame identifying a location and orientation of the plane in a three-dimensional coordinate system and defining the control points of the B-spline curve may involve defining control point coordinate locations in the basis curve plane coordinate frame.
The method may involve displaying a representation of the basis curve plane, and defining the control point coordinate location may involve receiving operator input identifying the control point coordinate locations on the basis curve plane.
Displaying the representation of the basis curve plane may involve displaying an orthographic view of the plane.
Displaying the orthographic view may further involve displaying a polyline representing a shape of the three-dimensional surface in the plane to facilitate selection of the control point locations defining the B-spline curve.
The method may involve determining two-dimensional coordinate locations on the plane of a polyline linking points of intersection between the three-dimensional surface and the plane and determining the offset from each the basis point may involve determining a distance between the basis point and a point of intersection between the polyline and a ray extending from the basis point in a direction normal to the curve.
Determining the two-dimensional coordinate locations on the plane of the polyline may involve determining three-dimensional coordinates of the points of intersection and transforming the points of intersection into two-dimensional coordinates on the plane.
In accordance with another aspect of the invention there is provided an apparatus for producing a computer representation of a three-dimensional surface of an appliance for a living body. The apparatus includes provisions for identifying a plurality of spaced apart planes intersecting the three-dimensional surface, and provisions for identifying a plurality of basis points for each plane in the plurality of spaced apart planes, the basis points lying generally along a curve on the plane. The apparatus also includes provisions for determining surface coordinate locations of a plurality of points on each the plane that lie on the three-dimensional surface, each surface coordinate location being defined as an offset from the basis point, and provisions for storing the surface coordinate locations in a computer memory.
The apparatus may include provisions for receiving an input plurality of coordinates defining a preliminary representation of the three-dimensional surface.
The apparatus may include provisions for transforming the surface coordinate locations into a set of instructions operable to control a computer aided manufacturing machine to produce the appliance.
The apparatus may include provisions for applying a shape transformation to the surface coordinate locations to produce modified surface coordinate locations and the provisions for storing the surface coordinate locations in the computer memory may include provisions for storing the modified surface coordinate locations in the computer memory.
The provisions for identifying the plurality of spaced apart planes may include provisions for identifying a plurality of plane coordinate frames respectively identifying locations and orientations of the plurality spaced apart planes in a three-dimensional coordinate system.
The provisions for identifying the plurality of plane coordinate frames may include provisions for identifying origin coordinate locations of a plurality of spaced apart points along a reference curve, the reference curve having a shape that generally corresponds to a shape of the three-dimensional surface in a first general direction along the surface, and provisions for generating data defining respective plane coordinate frames each having an origin located at respective origin coordinate locations and being oriented to cause a corresponding plane defined by the plane coordinate frame to be orthogonally oriented with respect to a portion of the reference curve passing through the origin coordinate location.
The apparatus may include provisions for displaying a representation of the three-dimensional surface, and provisions for receiving operator input identifying control point locations defining the reference curve.
The provisions for generating the data defining the plane coordinate frame may include provisions for generating data defining a Cartesian coordinate frame having a first axis oriented in a direction along the reference curve at the origin coordinate location and second and third axes defining the orientation of the plane.
The provisions for identifying the origin coordinate locations may include provisions for identifying regularly spaced apart origin coordinate locations along the reference curve.
The provisions for identifying the plurality of plane coordinate frames may include provisions for generating a modeling matrix for each of the plurality of plane coordinate frames, each the modeling matrix having elements defining orthogonal unit vectors, the orthogonal unit vectors identifying an orientation of the plane coordinate frame, and elements defining an origin coordinate location of the plane coordinate frame.
The provisions for determining the surface coordinate locations may include provisions for determining two-dimensional surface coordinate locations with respect to the plane coordinate frame, and provisions for transforming the two-dimensional surface coordinates into three-dimensional coordinates in the three-dimensional coordinate system using the modeling matrix.
The apparatus may include provisions for defining at least one basis curve located on a basis curve plane intersecting the three-dimensional surface, provisions for subdividing the at least one basis curve to identify a plurality of points along the basis curve, and the provisions for identifying the plurality of basis points on each of the planes may include provisions for projecting respective points in the plurality of points along the basis curve onto each of the planes.
The provisions for projecting the respective points may include at least one of provisions for interpolating between points located on at least two basis curves located on respective basis curve planes, and provisions for extrapolating from at least one point located on the at least one basis curve.
The provisions for defining the at least one basis curve located on the basis curve plane may include provisions for defining at least one basis curve located on one of the spaced apart plurality of planes.
The provisions for defining the basis curve may include provisions for defining control points of a B-spline curve located in the plane.
Each the basis curve plane may be defined by a basis curve plane coordinate frame identifying a location and orientation of the plane in a three-dimensional coordinate system and the provisions for defining the control points of the B-spline curve may include provisions for defining control point coordinate locations in the basis curve plane coordinate frame.
The apparatus may include provisions for displaying a representation of the basis curve plane, and the provisions for defining the control point coordinate location may include provisions for receiving operator input identifying the control point coordinate locations on the basis curve plane.
The provisions for displaying the representation of the basis curve plane may include provisions for displaying an orthographic view of the plane.
The provisions for displaying the orthographic view may further include provisions for displaying a polyline representing a shape of the three-dimensional surface in the plane to facilitate selection of the control point locations defining the B-spline curve.
The apparatus may include provisions for determining two-dimensional coordinate locations on the plane of a polyline linking points of intersection between the three-dimensional surface and the plane and the provisions for determining the offset from each the basis point may include provisions for determining a distance between the basis point and a point of intersection between the polyline and a ray extending from the basis point in a direction normal to the curve.
The provisions for determining the two-dimensional coordinate locations on the plane of the polyline may include provisions for determining three-dimensional coordinates of the points of intersection and provisions for transforming the points of intersection into two-dimensional coordinates on the plane.
In accordance with another aspect of the invention there is provided an apparatus for producing a computer representation of a three-dimensional surface of an appliance for a living body. The apparatus includes a processor circuit operably configured to identify a plurality of spaced apart planes intersecting the three-dimensional surface, and for each plane in the plurality of spaced apart planes, to identify a plurality of basis points on the plane, the basis points lying generally along a curve on the plane. The processor circuit is also operably configured to determine surface coordinate locations of a plurality of points on the plane that lie on the three-dimensional surface, each surface coordinate location being defined as an offset from the basis point, and to store the surface coordinate locations in a computer memory.
The processor circuit may be operably configured to receive an input plurality of coordinates defining a preliminary representation of the three-dimensional surface.
The processor circuit may be operably configured to transform the surface coordinate locations into a set of instructions operable to control a computer aided manufacturing machine to produce the appliance.
The processor circuit may be operably configured to apply a shape transformation to the surface coordinate locations to produce modified surface coordinate locations and to store the surface coordinate locations in the computer memory by storing the modified surface coordinate locations in the computer memory.
The processor circuit may be operably configured to identify the plurality of spaced apart planes by identifying a plurality of plane coordinate frames respectively identifying locations and orientations of the plurality spaced apart planes in a three-dimensional coordinate system.
The processor circuit may be operably configured to identify the plurality of plane coordinate frames by identifying origin coordinate locations of a plurality of spaced apart points along a reference curve, the reference curve having a shape that generally corresponds to a shape of the three-dimensional surface in a first general direction along the surface, and for each respective origin coordinate location, generating data defining a plane coordinate frame having an origin located at the origin coordinate location and being oriented to cause a corresponding plane defined by the plane coordinate frame to be orthogonally oriented with respect to a portion of the reference curve passing through the origin coordinate location.
The processor circuit may be operably configured to display a representation of the three-dimensional surface, and receive operator input identifying control point locations defining the reference curve.
The processor circuit may be operably configured to generate the data defining the plane coordinate frame by generating data defining a Cartesian coordinate frame having a first axis oriented in a direction along the reference curve at the origin coordinate location and second and third axes defining the orientation of the plane.
The processor circuit may be operably configured to identify the origin coordinate locations by identifying regularly spaced apart origin coordinate locations along the reference curve.
The processor circuit may be operably configured to identify the plurality of plane coordinate frames by generating a modeling matrix for each of the plurality of plane coordinate frames, the modeling matrix having elements defining orthogonal unit vectors, the orthogonal unit vectors identifying an orientation of the plane coordinate frame, and elements defining an origin coordinate location of the plane coordinate frame.
The processor circuit may be operably configured to determine the surface coordinate locations by determining two-dimensional surface coordinate locations with respect to the plane coordinate frame, and transforming the two-dimensional surface coordinates into three-dimensional coordinates in the three-dimensional coordinate system using the modeling matrix.
The processor circuit may be operably configured to define at least one basis curve located on a basis curve plane intersecting the three-dimensional surface, to subdivide the at least one basis curve to identify a plurality of points along the basis curve, and the processor circuit may be operably configured to identify the plurality of basis points on each of the planes by projecting respective points in the plurality of points along the basis curve onto each of the planes.
The processor circuit may be operably configured to project the respective points by at least one of interpolating between points located on at least two basis curves located on respective basis curve planes, and extrapolating from at least one point located on the at least one basis curve.
The processor circuit may be operably configured to define the at least one basis curve located on the basis curve plane by defining at least one basis curve located on one of the spaced apart plurality of planes.
The processor circuit may be operably configured to define the basis curve by defining control points of a B-spline curve located in the plane.
Each basis curve plane may be defined by a basis curve plane coordinate frame identifying a location and orientation of the plane in a three-dimensional coordinate system and the processor circuit may be operably configured to define the control points of the B-spline curve by defining control point coordinate locations in the basis curve plane coordinate frame.
The processor circuit may be operably configured to display a representation of the basis curve plane and to define the control point coordinate location by receiving operator input identifying the control point coordinate locations on the basis curve plane.
The processor circuit may be operably configured to display the representation of the basis curve plane by displaying an orthographic view of the plane.
The processor circuit may be operably configured to display the orthographic view by displaying a polyline representing a shape of the three-dimensional surface in the plane to facilitate selection of the control point locations defining the B-spline curve.
The processor circuit may be operably configured to determine two-dimensional coordinate locations on the plane of a polyline linking points of intersection between the three-dimensional surface and the plane and to determine the offset from each the basis point by determining a distance between the basis point and a point of intersection between the polyline and a ray extending from the basis point in a direction normal to the curve.
The processor circuit may be operably configured to determine the two dimensional coordinate locations on the plane of the polyline by determining three-dimensional coordinates of the points of intersection and by transforming the points of intersection into two-dimensional coordinates on the plane.
In accordance with another aspect of the invention there is provided a computer readable medium encoded with codes for directing a processor circuit to produce a computer representation of a three-dimensional surface of an appliance for a living body. The codes direct the processor circuit to identify a plurality of spaced apart planes intersecting the three-dimensional surface, and for each plane in the plurality of spaced apart planes to identify a plurality of basis points on the plane, the basis points lying generally along a curve on the plane. The codes also direct the processor circuit to determine surface coordinate locations of a plurality of points on the plane that lie on the three-dimensional surface, each surface coordinate location being defined as an offset from the basis point, and to store the surface coordinate locations in a computer memory.
In accordance with another aspect of the invention there is provided a computer readable signal encoded with codes for directing a processor circuit to produce a computer representation of a three-dimensional surface of an appliance for a living body. The codes direct the processor circuit to identify a plurality of spaced apart planes intersecting the three-dimensional surface, and for each plane in the plurality of spaced apart planes to identify a plurality of basis points on the plane, the basis points lying generally along a curve on the plane. The codes also direct the processor circuit to determine surface coordinate locations of a plurality of points on the plane that lie on the three-dimensional surface, each surface coordinate location being defined as an offset from the basis point, and to store the surface coordinate locations in a computer memory.
Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures.
In drawings which illustrate embodiments of the invention,
System Overview
Referring to
The apparatus 102 is in communication with the scanner 104 for receiving a signal encoded with an input plurality of coordinates representing a general shape of a part of a living body for which the appliance is to be produced. The scanned body part may be any body part, or group of body parts in any particular orientation for which it is desired to produce an appliance. For example, the scanned body part may be posterior portion of a human patient's torso and legs and the scanned input coordinates may be used to produce a supporting seat appliance for supporting the patient's body in a seated position.
Examples of suitable scanners include the FastSCAN Cobra handheld scanner manufactured by Polhemus of Colchester, Vt., the Yeti Foot Scanner manufactured by Vorum Research Corporation of British Columbia, Canada, and the STARscanner™ manufactured by Orthomerica Products Inc. of California.
The apparatus 102 includes a processor circuit 108 for receiving the input plurality of coordinates and for producing the computer representation of the three-dimensional surface of the intended appliance. The input plurality of coordinates may be produced from coordinate points received from the scanner 104, for example. The apparatus 102 also includes a display 110 in communication with the processor circuit 108. In this embodiment the apparatus 102 also includes a pointing device 112 having one or more actuator buttons for receiving operator input from an operator of the apparatus and a keyboard 114 for receiving alphanumeric input from the operator. The processor circuit 108 produces signals for causing the display 110 to display representations of a surface of the appliance being produced and to provide interactive visual feedback during modification of the appliance by an operator in response to inputs received at the pointing device 112 and keyboard 114 for producing a final appliance. In this case, a representation of a support appliance 116 for receiving a posterior portion of a patient's body is displayed on the display 110.
In alternative embodiments the input plurality of coordinates may be provided from a library of standard shapes of previously scanned appliances which are may be scaled and otherwise modified to provide a final appliance that fits a particular patient.
In general, producing an appliance for a patient involves receiving the input plurality of coordinates defining a preliminary representation of the surface of the appliance and transforming the input plurality of coordinates into a computer representation that facilitates modifications to the shape of the appliance. Accordingly, the final appliance representation may include alterations to the shape of surfaces, such as compressions in areas of the body that tolerate pressure and/or relief in certain areas of the body that are sensitive to pressure, thus providing a comfortably fitting appliance as defined by the final appliance representation.
The CAM machine 106 generally includes a machine tool portion 118 for machining the appliance. In this case the machined appliance is a mold 120 which is subsequently used to produce a final appliance by molding a thermoplastic or other material over the mold. The machined mold 120 has a shape defined by the computer representation of the mold and generally corresponds to the shape of the scanned body part, with alterations for fit, comfort, and/or support.
The CAM machine 106 also includes a controller 122 for controlling the machine tool portion 118 of the CAM machine. The controller 122 is in communication with the apparatus 102 for receiving a signal encoded with instructions operable to control the CAM machine 106 to produce the machined appliance 120. Alternatively the instructions may be output to a computer readable medium or memory for manual transfer to the CAM machine 106. An example of suitable CAM machines are the CANFIT-PLUS™ Carver and the CANFIT™ 6-Axis Carver, both produced by Vorum Research Corporation of British Columbia, Canada.
Processor Circuit
The processor circuit 108 of the apparatus 102 is shown in greater detail in
Program codes for directing the microprocessor 140 to carry out various functions are stored in the program memory 144, which may be implemented as a random access memory (RAM), and/or a hard disk drive (HDD), or a combination thereof. The program memory 144 includes a block of codes 172 for directing the microprocessor to provide general operating system (O/S) functions, and a block of codes 174 for directing the microprocessor 140 to provide functions for producing the computer representation of the three-dimensional surface of the appliance. In this embodiment, the program memory 144 also includes a block of codes 176 for directing the microprocessor 140 to provide shape representation functions for modifying the computer representation of the appliance to produce the final appliance.
The media reader 154 facilitates loading program codes into the program memory 144 from a computer readable medium 156, such as a CD ROM disk 158, a flash memory (not shown), or a computer readable signal 160 such as may be received over a network such as the internet, for example. The media reader also facilitates receiving the input plurality of coordinates and/or outputting carving instructions to the computer readable medium 156 for manual transfer to the CAM machine 106.
The RAM 148 includes a plurality of storage locations including a store 180 for storing the input plurality of coordinates, a store 182 for storing surface coordinate locations, a store 184 for storing a coordinate frame data, a store 186 for storing basis point data, a store 188 for storing basis curve data, and a store 190 for storing reference curve data.
The hard drive 150 includes a plurality of storage locations for persistent storage of data, such as library shapes and operating system files, for example.
The I/O 152 includes a first interface 162 having an input 164 for receiving the signal encoded with the input plurality of coordinates from the scanner 104, and a second interface 166 having an output 168 for producing the signal encoded with the instructions for controlling the CAM machine 106 to produce the appliance. The interfaces 162 and 166 may be universal serial bus (USB) or an RS232 serial interface for example. The I/O 152 also includes an output 170 for producing a display signal for causing a representation of the appliance 116 to be displayed on the display 110.
Operation
The operation apparatus 102 shown in
Referring to
In one embodiment the input plurality of coordinates may be provided by scanning the patient's body using the scanner 104 shown in
Referring to
Referring back to
In some embodiments, the input plurality of coordinates may be received in a format that already has defined planes (such as the planes 222-226). For example, referring to
Referring back to
Block 206 then directs the microprocessor 140 to identify a plurality of basis points on the first plane 222. Referring to
Referring back to
Referring back to
The process then continues at block 212, which directs the microprocessor 140 to determine whether the last plane has been processed. If there are still planes left in the plurality of planes that have not yet been processed then the process continues at block 214, which directs the microprocessor 140 to select the next plane for processing. Block 214 also directs the microprocessor 140 back to block 206 and blocks 206-212 are repeated for each successive plane (such as the planes 224 and 226 shown in
If at block 212, there are no more planes remain that are still to be processed, then the process 200 ends at 216.
Advantageously, by representing surface coordinate locations of points on the shape representation 220 (shown in
Furthermore, representation of surface coordinate locations using spaced apart planes facilitates simple modification of the appliance, for example by scaling along a plane to change the size of the appliance, or by changing the spacing and/or relative orientation between planes to alter the shape of the appliance. Such shape modifications may be advantageously performed by an operator who is not necessarily expert in three-dimensional CAD, as the spaced apart planes facilitate intuitive shape transformations without requiring in-depth knowledge of three-dimensional geometric transformations.
Identifying Planes
One operational embodiment of block 204 of the process 200 is shown in greater detail in
The process 260 begins at block 262, which directs the microprocessor 140 to display a screen for receiving operator input identifying a reference curve. Referring to
The window 284 also displays a reference curve 288. The reference curve 288 may be identified in response to operator input received at the pointing device 112 and/or keyboard 114 (shown in
Referring back to
The process 260 then continues at block 265, which directs the microprocessor 140 to select the first plane for processing. Block 264 then directs the microprocessor 140 to identify origin coordinate locations along the reference curve 288. In the embodiment shown, the reference curve 288 is subdivided to produce a plurality of regularly spaced apart origin coordinate locations, such as the three coordinate locations 294, 296, and 298 shown. While only three origin coordinate locations are shown, it should be understood that further origin coordinate locations will generally be identified along the reference curve 288. In this embodiment the reference curve is subdivided to produce regularly spaced apart origin coordinate locations 294, 296, and 298 having sufficient density to permit accurate representation of the three-dimensional surface.
The process 260 then continues at block 266, which directs the microprocessor 140 to generate data defining a plane coordinate frame at each origin location. In general, the plane coordinate frames are defined in a three-dimensional coordinate system (for example the Cartesian coordinate system shown in
The coordinate frames 300, 302, and 304 are in turn defined in the (x,y,z) three-dimensional coordinate system shown at 314. In the embodiment shown the coordinate frames 300, 302, and 304 are defined as Cartesian coordinate frames, but in other embodiments alternative coordinate systems may be used to define the coordinate frames. Advantageously, all points lying on the u-v axes (i.e. the planes 222-226) are two-dimensional coordinates and have a w coordinate value of zero.
In one embodiment, the coordinate frames 300, 302, and 304 are defined by a three-dimensional modeling matrix:
where the elements a11, a12, and a13 represent a unit vector defining the u-axis of the coordinate frame, a21, a22, and a23 represent a unit vector defining the v-axis of the coordinate frame, and a31, a32, and a33 represent a unit vector defining the w-axis of the coordinate frame. The elements a41, a42, and a43 represent x, y, and z values of the origin coordinate location for in the (x,y,z) coordinate system 314 of each of the respective coordinate frames 300, 302, and 304. The modeling matrix M may be used to transform two-dimensional surface coordinates lying on the u-v plane into three-dimensional coordinates defined in the three-dimensional coordinate system 314. Each two-dimensional u-v plane coordinate may be represented by the vector
where the w coordinate is zero everywhere on the planes 222-226. Similarly, three-dimensional coordinates may be represented by the vector:
Transforming two-dimensional plane coordinates into three-dimensional (x,y,z) coordinates thus involves, the following matrix multiplication:
Conversely, transforming three-dimensional (x,y,z) surface coordinates into two-dimensional plane coordinates involves the following matrix multiplication:
Advantageously, the above coordinate transformations permit the appliance to be conveniently modified in the two-dimensional uv-axis planes or by relocating the coordinate frames 300, 302, and 304 with respect to each other and then transformed into three-dimensional (x,y,z) coordinates for producing the final appliance using the CAM machine 106 shown in
Referring back to
If at block 270, the last coordinate frame for the last of the plurality of origin coordinate locations along the reference curve 288 has not yet been identified, then the microprocessor 140 is directed to block 274. Block 274 directs the microprocessor 140 to select the next plane for processing and directs the microprocessor 140 to return to block 266 and repeat blocks 266-270.
Defining Basis Points
Referring back to
Referring to
The process begins at block 322, when operator input is received indicating a new basis curve plane location along the reference curve 288. Referring back to
Referring to
The process 320 then continues at block 324, which directs the microprocessor 140 to receive operator input identifying a basis curve 334 on the basis curve plane displayed in the window 330. In this embodiment, the basis curve 334 comprises a B-spline curve having endpoints 336 and 338, and having a shape defined by control points 340, 342, and 344. When the window 330 is first displayed for the operator, the basis curve 334 may be defined as an initial quadratic or cubic B-spline curve located in a default position with respect to the basis curve plane origin coordinate location 295. The operator may then drag the endpoints 336 and 338 and control points 340, 342, and 344 to define a desired shape and location of the basis curve. The operator may also click on the displayed screen to add further control points to the B-spline curve. In general B-spline curves may be represented by two or more control points (i.e. endpoints 336 and 338 and zero or more additional control points). B-spline curves with three control points are usually quadratic Bezier curves, and with four control points are usually cubic Bezier curves. Higher order shapes having more than four control points are generally represented as smoothly connected Bezier curves of lower order.
Referring back to
The process then continues at block 326, which directs the microprocessor 140 to subdivide the basis curve 334 to identify a plurality of points 346 (shown in
Block 328 then directs the microprocessor 140 to project the points identified at block 326 onto the spaced apart planes 222-226 to determine locations of the basis points on each plane (i.e. the basis points 230 shown in
Referring to
where u and v are the coordinates of the basis point 230 in the uv-axes and Δu and Δv provide a slope or gradient defining the direction of the ray.
Referring back to
In the embodiment shown in
Referring back to
In other embodiments, basis curve plane locations 295, 297, and 299 may be constrained to lie on one of the spaced apart plurality of planes such as the planes 222-226 shown in
Determining Surface Coordinate Locations
One embodiment of the block 208 of the process 200 shown in
The process 400 begins at block 402, which directs the microprocessor 140 to determine the intersection of the preliminary three-dimensional shape with the plane (i.e. one of the spaced apart planes such as the plane 222). As stated above, the preliminary three-dimensional surface of the appliance is generally represented using a collection of flat polygons, a subset of which will each intersect the plane 222 at two edges of the polygon thus defining pairs of points making up line segments. Coordinates of the points the three-dimensional (x,y,z) coordinate system may then be interpolated from the coordinate locations of the vertices of the flat polygons to yield a set of (x,y,z) points defining a polyline of intersection between the three-dimensional shape and the plane 222.
Block 404 then directs the microprocessor 140 to transform the polyline coordinates from three-dimensional (x,y,z) coordinates into two-dimensional coordinates on the plane 222 using equation 5 above. The transformation results in a plurality of points 380 having coordinates defined in the plane 222.
The process 400 then continues at block 406, which directs the microprocessor 140 to determine points of intersection of the basis point rays 384 (read from the store 186 of the RAM 148 in
Block 408 then directs the microprocessor 140 to store the surface coordinate locations 388 in the store 182 of the RAM 148. Since the surface coordinate locations are determined with reference to the basis points 380, in one embodiment surface coordinate locations may be stored as an offset distance and a reference to the corresponding basis point 380. Accordingly, to identify each surface coordinate locations on the plane would require only a reference to the basis point and an offset therefrom to be stored in the store 182. Basis point coordinate locations are stored in the store 186 and may be conveniently referenced to avoid duplication.
Advantageously, by using basis curves and/or basis points to provide a template for representing a three-dimensional shape of the appliance facilitates representation of complex shapes by permitting the basis curve shape to be selected as a template. The template shape may be selected to permit accurate representation of all portions of the appliance.
While specific embodiments of the invention have been described and illustrated, such embodiments should be considered illustrative of the invention only and not as limiting the invention as construed in accordance with the accompanying claims.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/CA2008/001362 | 7/18/2008 | WO | 00 | 1/18/2011 |