00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include "common.h"
00038
00039
00040
00041 #include <stdio.h>
00042 #include "machine.h"
00043 #include "vmath.h"
00044 #include "nmg.h"
00045 #include "raytrace.h"
00046 #include "nurb.h"
00047
00048 struct face_g_snurb *
00049 rt_nurb_scopy(const struct face_g_snurb *srf, struct resource *res)
00050 {
00051 register struct face_g_snurb * n;
00052 int i;
00053
00054 NMG_CK_SNURB(srf);
00055
00056 n = (struct face_g_snurb *) rt_nurb_new_snurb( srf->order[0], srf->order[1],
00057 srf->u.k_size, srf->v.k_size,
00058 srf->s_size[0],srf->s_size[1],
00059 srf->pt_type, res);
00060
00061 for( i = 0; i < srf->u.k_size; i++)
00062 n->u.knots[i] = srf->u.knots[i];
00063
00064 for( i = 0; i < srf->v.k_size; i++)
00065 n->v.knots[i] = srf->v.knots[i];
00066
00067 for ( i = 0; i < srf->s_size[0] * srf->s_size[1] *
00068 RT_NURB_EXTRACT_COORDS(srf->pt_type); i++)
00069 {
00070
00071 n->ctl_points[i] = srf->ctl_points[i];
00072 }
00073
00074 return (struct face_g_snurb *) n;
00075 }
00076
00077 struct edge_g_cnurb *
00078 rt_nurb_crv_copy(const struct edge_g_cnurb *crv)
00079 {
00080 register struct edge_g_cnurb * n;
00081 int i;
00082
00083 NMG_CK_CNURB( crv );
00084
00085 n = (struct edge_g_cnurb *) rt_nurb_new_cnurb( crv->order,
00086 crv->k.k_size, crv->c_size, crv->pt_type);
00087
00088 for( i = 0; i < crv->k.k_size; i++)
00089 n->k.knots[i] = crv->k.knots[i];
00090
00091 for( i = 0; i < crv->c_size *
00092 RT_NURB_EXTRACT_COORDS(crv->pt_type); i++)
00093 n->ctl_points[i] = crv->ctl_points[i];
00094
00095 return (struct edge_g_cnurb *) n;
00096 }
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106