The halfShift and fullShift variables are based on the original face ellipse shape. They are the
major and minor axis chord lengths of the two different arcs. The fullShift only gets used in positioning
the lower half of the face, everything else is shifted left/right so works off of the halfShift
since it aligns with the minor axis of the top part of the dog's face, which is the x-direction
Turns out I did end up needing the chord length for some of the proportioning if I wanted symmetry.
Did need to add math, but was easy enough to plug and chug. Looking back, I could have done the trig
once right after I assigned the faceLength variable and then stored that value to use later on, rather
than copy/pasting the equation over and over again and then tweaking it with a constant...
Because of the design I chose, iteration didn't take a primary role in my program, but I did use it for the
ellipses and the triangle to save myself a lot of variable updating/redundant lines of code since all of the
non-circle shapes were regular shapes anyway. That did make things a lot easier, especially since by design
the turtle ended up with a consistent in/out position which maybe wouldn't have happened if I wrote the whole
thing line by line.
If I were going to continue with this project, which I still might, I would add the lower half of the dog
and a nice animation might be to make the tail wag.
The nose function got me stuck for a while, mostly because I tried to relearn how to measure
chord length of a circle so I could trig my way into an exact position of the turtle to make
the swoops for the septum/upper lip of the dog at the base of the nose, but after much math, I found
myself estimating anyway, so the only real known that I *needed* was the x-dir midpoint, which I knew
and from there I chose some reasonable numbers that make the bottom of the nose look as intended.
I'm finding myself not stuck, but challenged, with the final layout of all of the parts of the face. I think
I'm going to be in the same boat as before where exact values aren't really needed and I have enough info to
estimate a "close enough" position for how all of the parts come together. Order of operations is also
going to be important here because some of the shapes need to go on top of others to get a layering effect.
So far the biggest sticking point has been the planning, mostly from the standpoint of
designing a drawing that I will realistically be able to create with turtle. I want to make
a dog, so I was going to make a pointer (my dog) holding point, but the curves were
complex and I couldn't quite figure out how I wanted to integrate iteration into that design.
I've since decided on a dog's face, where I can use a lot of the same shapes in a variety of
locations, so I'm hoping that continues to work. The ear() and face() functions that I have
right now generate two different forms of ellipses, one sort of football-shaped, the other much
longer and narrower, proportionally.