diff --git a/docs/img/contact_printer.svg b/docs/img/contact_printer.svg
new file mode 100644
index 0000000..3d92305
--- /dev/null
+++ b/docs/img/contact_printer.svg
@@ -0,0 +1,1853 @@
+
+
diff --git a/docs/img/contact_printer_gates.svg b/docs/img/contact_printer_gates.svg
new file mode 100644
index 0000000..c316612
--- /dev/null
+++ b/docs/img/contact_printer_gates.svg
@@ -0,0 +1,925 @@
+
+
diff --git a/docs/img/contact_printer_takeup.svg b/docs/img/contact_printer_takeup.svg
new file mode 100644
index 0000000..e61f94a
--- /dev/null
+++ b/docs/img/contact_printer_takeup.svg
@@ -0,0 +1,870 @@
+
+
diff --git a/docs/whitepaper/README.md b/docs/whitepaper/README.md
index afd2d61..ff33170 100644
--- a/docs/whitepaper/README.md
+++ b/docs/whitepaper/README.md
@@ -16,7 +16,15 @@ bibliography: sources.bib
csl: citation_style.csl
---
-{ width=5.5in height=4.1in }
+```{=latex}
+\begin{center}
+```
+
+{ width=4in height=3in }
+
+```{=latex}
+\end{center}
+```
# Introduction
@@ -45,7 +53,15 @@ The Uhler Cine Printer provides a great example of a tool that solves the proble
Its design was a product of the time it was created and therefore a modern approach is needed to make a contact printer that fulfills the same needs but, for example, won't be cast out of metal in a mass production run.
Still, it provides a guide as an example of a tool built for shorter films and with simple exposure controls.
-![Photograph of the Uhler Cine Printer]()
+```{=latex}
+\begin{center}
+```
+
+{ width=4in height=2.66in }
+
+```{=latex}
+\end{center}
+```
Designing a new contact printer at the same scale and feature complexity as the towering Bell & Howell Model C printer--a machinebuilt to handle thousands of feet of film for printing features with intricate color and fade controls--is not practical or within the engineering capabilities of the authors.
Creating one at the size and scale the Uhler Cine Printer that can be made using rapid prototyping techniques, however, will find a use to many artists.
@@ -87,7 +103,7 @@ In order to fulfill this research proposal the lab hosted a residency with mysel
We were given time and resources to explore our various topics of research related to contact printing and creating sound prints.
This allowed for tremendous progress to be made on the details of the implementation and, with darkroom access, gave opportunities to run tests on exposure, use of filters and overall film tensioning.
-This residency
+This residency took place during
The results included a 100 foot sound print made from a Kodak 7222 Double-X negative onto Kodak 3302 print stock, with a soundtrack written directly on the print and a working first draft prototype of this design.
Collaboration with the other residents led to ideas for future work and improved the design as we performed tests collectively.
The possibility of making this platform work as a soundtrack camera was also explored during this session.
@@ -97,7 +113,7 @@ This device was used to create a short silent print during the lab meeting and p
# The Contact Printer
-{ width=5.5in height=3.9in }
+{ width=5.5in height=3.89in }
## The Sprocketed Roller
@@ -165,7 +181,15 @@ This reduces the overall cost of the build and removes the need for additional m
The take-up mechanisms for the picture and stock are inspired by a feature in the The Shaffer Linear Processor [@slp]: the magnetic clutch [@slp-clutch].
-![Illustration of an exploded view of a take-up magnetic clutch]()
+```{=latex}
+\begin{center}
+```
+
+{ width=3in height=3.98in }
+
+```{=latex}
+\end{center}
+```
The choice to direct drive the take-up is due to the fact that powerful geared DC motors are cheap and available.
Driving them separately, rather than using a belt, means that the speed can be controlled individually.
@@ -185,6 +209,8 @@ Our tests with color prints indicated that we needed additional filters, which c
## The Gate
+{ width=5.5in height=1.92in }
+
The gate, being the part of the printer that allows light to pass from the lamp onto the film with a precise mask, is one of the most essential parts of any contact printer design.
Lessons learned through testing the first version of this prototype mean that major changes were needed in the approach to get satisfactory results.
@@ -222,7 +248,7 @@ As a framing material it is light, sturdy and holds up to substantial forces whe
![Illustration of the 2020 aluminum extrusion frame with lengths separated]()
-It would be possible to add additional rigidity if needed by adding additional lengths but for this prototype a total of six (6) lengths connected by five (5) panels and eight (8) corner brackets has been st
+It would be possible to add rigidity if needed by adding additional lengths but for this prototype a total of six (6) lengths connected by five (5) panels and eight (8) corner brackets has been sturdy enough for all tests.
## The Electronics
diff --git a/docs/whitepaper/img.sh b/docs/whitepaper/img.sh
new file mode 100644
index 0000000..f2bd626
--- /dev/null
+++ b/docs/whitepaper/img.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+if [[ -z "${1}" ]]; then
+ echo "Please include a file as the first argument"
+ exit 1
+fi
+
+if [[ ! -f "${1}" ]]; then
+ echo "File ${1} doesn't exist"
+ exit 2
+fi
+
+INCHWIDTH=5.5
+
+if [[ ! -z "${2}" ]]; then
+ INCHWIDTH=${2}
+fi
+
+WIDTH=$(identify -ping -format '%w' "${1}")
+HEIGHT=$(identify -ping -format '%h' "${1}")
+
+INCHHEIGHT=$(echo "scale=2;${HEIGHT}/(${WIDTH}/${INCHWIDTH})" | bc)
+
+echo "HEIGHT: ${INCHHEIGHT}in"
\ No newline at end of file
diff --git a/scad/illustrations.scad b/scad/illustrations.scad
new file mode 100644
index 0000000..ccec455
--- /dev/null
+++ b/scad/illustrations.scad
@@ -0,0 +1,114 @@
+use <./contact_printer.scad>;
+
+PART = "gates";
+
+
+if (PART == "sprocketed_roller_invert_solid") {
+ $fn = 200;
+ sprocketed_roller_invert_solid();
+} else if (PART == "magnetic_clutch") {
+ MAGNETS = 4;
+ MAGNET_D = 8.1;
+ MAGNET_H = 2.5;
+ H = 3;
+ OFFSET = 12;
+
+ centered_geared_motor([0, 0, -70], [180, 0, 0]);
+ translate([0, 0, -30]) rotate([0, 0, 90]) magnetic_coupling();
+ for (i = [0 : MAGNETS - 1]) {
+ rotate([0, 0, i * (360 / MAGNETS)]) {
+ translate([0, OFFSET, -22]) {
+ cylinder(r = R(MAGNET_D), h = MAGNET_H, center = true, $fn = 50);
+ }
+ }
+ }
+ translate([0, 0, 20]) {
+ m4_nut();
+ translate([0, 0, 20]) cylinder(r = R(4), h = 40, center = true, $fn = 30);
+ }
+ translate([0, 0, 0]) slip_coupling();
+ translate([0, 0, 30]) contact_printer_daylight_spool_insert_reinforced();
+ translate([0, 0, 70]) contact_printer_daylight_spool_insert_reinforced_nut();
+ translate([0, 0, 80]) difference () {
+ m4_nut();
+ cylinder(r = R(4), h = 5, center = true, $fn = 30);
+ }
+} else if (PART == "gates") {
+ picture_gate_standard([-30, 0, 0]);
+ picture_gate_full([-10, 0, 0]);
+ picture_gate_super16([10, 0, 0]);
+ picture_gate_sound([30, 0, 0]);
+}
+/*
+PART = "feed_panel_picture";
+LIBRARY = true;
+
+if (PART == "panel") {
+ rotate([180, 0, 0]) panel();
+} else if (PART == "lamp_single") {
+ lamp_single();
+} else if (PART == "lamp_cover") {
+ rotate([180, 0, 0]) lamp_cover();
+} else if (PART == "takeup_panel_picture"){
+ takeup_panel_picture();
+} else if (PART == "takeup_panel_picture_motor_mount") {
+ takeup_panel_picture_motor_mount();
+} else if (PART == "takeup_panel_stock"){
+ takeup_panel_stock();
+} else if (PART == "takeup_panel_stock_motor_mount") {
+ takeup_panel_stock_motor_mount();
+} else if (PART == "feed_panel_picture") {
+ feed_panel_picture();
+} else if (PART == "feed_panel_stock") {
+ feed_panel_stock();
+} else if (PART == "feed_panel_motor_mount") {
+ feed_panel_motor_mount();
+} else if (PART == "gate_picture") {
+ picture_gate_standard(rot = [-90, 0, 0]);
+} else if (PART == "gate_full") {
+ picture_gate_full(rot = [-90, 0, 0]);
+} else if (PART == "gate_super16") {
+ picture_gate_super16(rot = [-90, 0, 0]);
+} else if (PART == "gate_sound") {
+ picture_gate_sound(rot = [-90, 0, 0]);
+} else if (PART == "sprocketed_roller_invert") {
+ sprocketed_roller_invert();
+} else if (PART == "sprocketed_roller_invert_solid") {
+ sprocketed_roller_invert_solid();
+} else if (PART == "sprocketed_roller_reinforced_wheel") {
+ rotate([180, 0, 0]) sprocketed_roller_reinforced_wheel(sprockets = 18, bevel = true, model = "gearbox_motor", nuts = true);
+} else if (PART == "magnetic_coupling") {
+ contact_printer_magnetic_coupling();
+} else if (PART == "slip_coupling"){
+ contact_printer_slip_coupling();
+} else if (PART == "daylight_spool_insert_reinforced_nut") {
+ contact_printer_daylight_spool_insert_reinforced_nut();
+} else if (PART == "daylight_spool_insert_reinforced") {
+ contact_printer_daylight_spool_insert_reinforced();
+} else if (PART == "corner_foot") {
+ rotate([180, 0, 0]) corner_foot();
+} else if (PART == "2020_tslot_insert") {
+ 2020_tslot_insert();
+} else if (PART == "bearing_post_nut"){
+ bearing_post_nut();
+} else if (PART == "idle_roller_half_a") {
+ idle_roller_half_a();
+} else if (PART == "idle_roller_half_b") {
+ idle_roller_half_b();
+} else if (PART == "gate_carrier") {
+ rotate([0, 0, 0]) gate_carrier();
+} else if (PART == "lamp_LEDs") {
+ rotate([90, 0, 0]) lamp_LEDs();
+} else if (PART == "electronics_panel") {
+ electronics_panel(rot = [180, 0, 0]);
+} else if (PART == "knob"){
+ contact_printer_knob();
+} else {
+ //debug();
+ //difference () {
+ debug_lamp();
+ //translate([0, -50, 0]) cube([100, 100, 100], center = true);
+ //}
+ //debug_clutch();
+}
+*/
\ No newline at end of file