This method should be activated when key 2 is pressed on the keyboard. In Release mode with optimizations it takes just over 3 seconds. Each time the key is pressed the subdivision level is increased by 1 until it reaches the maximum. In debug mode, you can see the Bezier function and the four calls to powf. Justify your answer and write it to the ReadMe. Determine and so that the polynomial pieces join. We got rid of a lot of function calls both calls to Bezier and calls to powf , and we replaced a very expensive squaring function with a very cheap one using vmul.

On my iPhone 4, in Debug mode, with points, this takes over 20 seconds to run. While B-splines can be drawn by direct evalution point by point, one can use a subdivision schemes to find an arbitrarily large number of points that approximate the exact curve. So we have to call it twice per point. Accelerate is optimized for big matrices. We got rid of a lot of function calls both calls to Bezier and calls to powf , and we replaced a very expensive squaring function with a very cheap one using vmul. Function calls can be expensive.

Finally, the strangest thing you need to understand is that this function is not linear for t. Place the eight control points equally distributed on a unit circle. You will construct a curve segment for each adjacent pair. This just calls Bezier twice. Where did the other calls go? Find the formulas for these parameters and write them into your ReadMe.

# Assignment 1: Arbitrary-degree Bezier Curves

Can you choose the eight control points so that the curve becomes a circle? But in release mode, the Bezier function is gone entirely. The end point would be P3 and the control points would be P1 and P2.

The compiler uses the NEON processor for all kinds of things.

## Computer Graphics

We got rid of a lot of function calls both calls to Bezier and calls to powfand we replaced a very expensive squaring function with a very cheap one using vmul. Read more at Even Faster Bezier.

I mean, everyone knows that Accelerate uses the fancy vector hardware and that means super-duper fast. You can get the full test code in BezierPerf. Justify your answer and write it to the ReadMe.

Still 10x slower then hand-coded. This is a big deal.

# Homework 1 Part B – CAP (Spring )

Each time the key is pressed the subdivision level is increased by 1 until it reaches the maximum. But between 0 and 1, things get much more complicated.

For little tiny things, the cost of the function call dwarfs what you might save otherwise. This method should be activated when key 2 is pressed on the keyboard. To accomplish this task, you need to write supporting cuurve to convert your input data control points into a format that is expected by gluNurbsCurve. In Release mode with optimizations it takes just over 3 seconds.

Is the curve a circle? It can be for certain problems. We got rid of that long crazy function and replaced yomework with a couple of elegant matrix multiples running on the NEON vector nomework.

The first thing to understand is that this is exactly the same function that UIBezierPath uses. After that this method should be deactivated and not drawn on the screen. P0 through P3 are the control points. But day-to-day multiplication is often not one of them.

Write down formulas for and and put it into your ReadMe. While B-splines can be drawn by direct evalution point by point, one can use a subdivision schemes to find an arbitrarily large number of points that approximate the exact curve. For instance if you want to calculate intersections, or you want to draw text along the curve like in Homewokr from iOS: In fairness, we should try removing the powf calls in the Accelerate function.

Control polygon should be drawn first without subdivision.