Beispiel #1
0
int
test_curve(void)
{
    spiro_cp path[] = {
	{334, 117, 'v'},
	{305, 176, 'v'},
	{212, 142, 'c'},
	{159, 171, 'c'},
	{224, 237, 'c'},
	{347, 335, 'c'},
	{202, 467, 'c'},
	{81, 429, 'v'},
	{114, 368, 'v'},
	{201, 402, 'c'},
	{276, 369, 'c'},
	{218, 308, 'c'},
	{91, 211, 'c'},
	{124, 111, 'c'},
	{229, 82, 'c'}
    };
    spiro_seg *segs;
    int i;

    n = 1;
    for (i = 0; i < 1000; i++) {
	segs = setup_path(path, 15);
	solve_spiro(segs, 15);
    }
    printf("100 800 translate 1 -1 scale 1 setlinewidth\n");
    print_segs(segs, 15);
    printf("showpage\n");
    return 0;
}
Beispiel #2
0
spiro_seg *
run_spiro(const spiro_cp *src, int n)
{
    int nseg = src[0].ty == '{' ? n - 1 : n;
    spiro_seg *s = setup_path(src, n);
    if (nseg > 1)
	solve_spiro(s, nseg);
    return s;
}
Beispiel #3
0
spiro_seg *
run_spiro(const spiro_cp *src, int n)
{
    if (src==NULL || n <= 0) return 0;
    int nseg = src[0].ty == '{' ? n - 1 : n;
    spiro_seg *s = setup_path(src, n);
    if (s) {
	int converged = 1 ; // this value is for when nseg == 1; else actual value determined below
	if (nseg > 1) converged = solve_spiro(s, nseg);
	if (converged) return s;
	free(s);
    }
    return 0;
}
Beispiel #4
0
spiro_seg *
run_spiro0(const spiro_cp *src, double *dm, int ncq, int n)
{
    int converged, nseg;
    spiro_seg *s;

    if (src==NULL || n <= 0) return 0;

    s = setup_path0(src, dm, n);
    if (s) {
	nseg = src[0].ty == '{' ? n - 1 : n;
	converged = 1 ; /* this value is for when nseg == 1; else actual value determined below */
	if (nseg > 1) converged = solve_spiro(s, nseg);
	if (converged) return s;
	free(s);
    }
    return 0;
}