{"id":68967,"date":"2021-11-12T15:44:54","date_gmt":"2021-11-12T20:44:54","guid":{"rendered":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/?p=68967"},"modified":"2021-11-12T15:44:54","modified_gmt":"2021-11-12T20:44:54","slug":"landscape-tulip-fields","status":"publish","type":"post","link":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/2021\/11\/12\/landscape-tulip-fields\/","title":{"rendered":"Landscape: Tulip Fields"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><p>I worked too hard on this project. I ended up drawing all of the images in my code on procreate, so I do not have many sketches except for some resizing issues.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"768\" height=\"1024\" src=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5825-768x1024.jpg\" alt=\"\" class=\"wp-image-68968\" srcset=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5825-768x1024.jpg 768w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5825-225x300.jpg 225w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5825-1152x1536.jpg 1152w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5825-1536x2048.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5825-1200x1600.jpg 1200w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5825-scaled.jpg 1920w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\"><figcaption>Math on Bottom side<\/figcaption><\/figure><figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"768\" height=\"1024\" src=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5826-768x1024.jpg\" alt=\"\" class=\"wp-image-68969\" srcset=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5826-768x1024.jpg 768w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5826-225x300.jpg 225w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5826-1152x1536.jpg 1152w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5826-1536x2048.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5826-1200x1600.jpg 1200w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/IMG_5826-scaled.jpg 1920w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\"><figcaption>Trying to figure out tulip configuration<\/figcaption><\/figure><p>The code was easier to figure out than I thought, but because I decided to use so many elements it got repetitive fast, there are a few things I could have tried i think in ways of getting my stuff to show up more randomly, but because of the way I wrote my code I found that setting that up farther would have not been worth the time for the effect.<\/p>\n\n\n\n<p>Drawing took a few days, but I really like my images.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"791\" src=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/cat-1024x791.png\" alt=\"\" class=\"wp-image-68970\" srcset=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/cat-1024x791.png 1024w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/cat-300x232.png 300w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/cat-768x593.png 768w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/cat-1536x1187.png 1536w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/cat-2048x1583.png 2048w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/cat-1200x927.png 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\"><figcaption>a cat<\/figcaption><\/figure><figure class=\"wp-block-image size-large\"><img loading=\"lazy\" width=\"1024\" height=\"791\" src=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/flower2-1024x791.png\" alt=\"\" class=\"wp-image-68971\" srcset=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/flower2-1024x791.png 1024w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/flower2-300x232.png 300w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/flower2-768x593.png 768w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/flower2-1536x1187.png 1536w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/flower2-2048x1583.png 2048w, https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/flower2-1200x927.png 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\"><figcaption>very many tulips(color added with code)<\/figcaption><\/figure><p>Some of the math I had to do really made me think and I can&rsquo;t quite decide if using images made this take longer or shorter to code. <\/p>\n\n\n\n<p><a class=\"p5_sketch_link\" data-width=\"400\" data-height=\"280\" href=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/sketch-44.js\">sketch<\/a><a href=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/uploads\/2021\/11\/sketch-44.js\">file<\/a><iframe src=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-content\/plugins\/p5-embedder\/p5_iframe.html\" class=\"p5_exampleFrame\" width=\"400\" height=\"280\"><\/iframe><pre class=\"language-javascript\"><code class=\"p5_editor language-javascript\">var szex = 550; \/\/ x size for some images\nvar szey = 365; \/\/y size for some images\nvar szex2 = 367.2; \/\/x size for smaller img\nvar szey2 = 240; \/\/y size for smaller img\nvar tulip = [];\nvar offset = 0;\nvar skys = [];\nvar mountains = [];\nvar airballoons = [];\nvar trees = [];\nvar windmillBottoms = [];\nvar birds = [];\nvar electric = [];\nvar bunnys = [];\nvar fullWind = [];\nvar treeLines = [];\nvar cats = [];\n\n\n\nfunction preload() {\n    flowerImg = loadImage(\"https:\/\/i.imgur.com\/VSMWH0A.png\");\n    tree1Img = loadImage(\"https:\/\/i.imgur.com\/s66n2RJ.png\");\n    mountainsImg = loadImage(\"https:\/\/i.imgur.com\/FCSY9xA.png\");\n    birdImg = loadImage(\"https:\/\/i.imgur.com\/2zN4jIk.png\");\n    windmillBottomImg = loadImage(\"https:\/\/i.imgur.com\/xGOhbMn.png\");\n    electricWindmillImg = loadImage(\"https:\/\/i.imgur.com\/0R2RKsz.png\");\n    airballoonImg = loadImage(\"https:\/\/i.imgur.com\/HPmyDXQ.png\");\n    bunnyImg = loadImage(\"https:\/\/i.imgur.com\/tOtLTev.png\");\n    fullWindmillImg = loadImage(\"https:\/\/i.imgur.com\/EUCzk9P.png\");\n    treeLineImg = loadImage(\"https:\/\/i.imgur.com\/ipeIQSL.png\");\n    catImg = loadImage(\"https:\/\/i.imgur.com\/d9pAL7i.png\");\n    skyImg = loadImage(\"https:\/\/i.imgur.com\/AykCYLx.png\");\n}\n\n\n\nfunction tulips(tx) {\n    var p = {x: tx, \n        right: tulipsRight,\n        display: tulipsDisplay};\n    return p;\n}\n\nfunction tulipsRight() {\n    return this.x + 900;\n}\n\nfunction tulipsDisplay(tx) {\n    flower2Img.resize(flower2Img.width - 100, flower2Img.height);\n   image(flower2Img, this.x, 190, 900, 105);\/\/left\n}\n\n\nfunction bird(bx) {\n    var b = {x: bx, \n        right: birdRight,\n        display: birdDisplay};\n    return b;\n}\n\nfunction birdRight() {\n    return this.x + szex2 + width * 9;\n}\n\nfunction birdDisplay(tx) {\n   image(birdImg, this.x + 200, 0, 165.4, 100); \/\/move faster across the screen\n}\n\n\n\nfunction airballoon(ax) {\n    var a = {x: ax, \n        right: airballoonRight,\n        display: airballoonDisplay};\n    return a;\n}\n\nfunction airballoonRight() {\n    return this.x + szex2 + width * 1.5;\n}\n\nfunction airballoonDisplay(tx) {\n   image(airballoonImg, this.x, 110, szex2, szey2);\n}\n\n\n\nfunction sky(sx) {\n    var s = {x: sx, \n        right: skyRight,\n        display: skyDisplay};\n    return s;\n}\n\nfunction skyRight() {\n    return this.x + 500;\n}\n\nfunction skyDisplay(tx) {\n   image(skyImg, this.x, 0, 500, 300);\n}\n\n\nfunction mountain(mx) {\n    var  m = {x: mx, \n        right: mountainRight,\n        display: mountainDisplay};\n    return m;\n}\n\nfunction mountainRight() {\n    return this.x + 827 + width * 5;\n}\n\nfunction mountainDisplay(tx) {\n   image(mountainsImg, this.x - 20, -85, 827, 500);\n}\n\n\nfunction tree(tx) {\n    var  t = {x: tx, \n        right: treeRight,\n        display: treeDisplay};\n    return t;\n}\n\nfunction treeRight() {\n    return this.x + szex + width * 1.5;\n}\n\nfunction treeDisplay(tx) {\n   image(tree1Img, this.x, 20, szex, szey);\n}\n\n\nfunction treeLine(tx) {\n    var  t = {x: tx, \n        right: treeLineRight,\n        display: treeLineDisplay};\n    return t;\n}\n\nfunction treeLineRight() {\n    return this.x + szex + width * 1.7;\n}\n\nfunction treeLineDisplay(tx) {\n   image(treeLineImg, thisx, 25, szex, szey); \/\/with mountains or without\n}\n   \n\nfunction windmillBottom(wx) {\n    var  w = {x: wx, \n        right: windmillBottomRight,\n        display: windmillBottomDisplay};\n    return w;\n}\n\nfunction windmillBottomRight() {\n    return this.x + szex2 + width * 2.2;\n}\n\nfunction windmillBottomDisplay(tx) {\n   image(windmillBottomImg, this.x + 150, 87, szex2, szey2);\/\/dont show with mountain\n}\n\n\nfunction windmill(wx) {\n    var  w = {x: wx, \n        right: windmillRight,\n        display: windmillDisplay};\n    return w;\n}\n\nfunction windmillRight() {\n    return this.x + 248 + width * 3.2;\n}\n\nfunction windmillDisplay(tx) {\n   image(fullwindmillImg, this.x + 20, 100, 248, 150);\n}\n \n\nfunction electricwindmill(wx) {\n    var  w = {x: wx, \n        right: electricwindmillRight,\n        display: electricwindmillDisplay};\n    return w;\n}\n\nfunction electricwindmillRight() {\n    return this.x + szex + width * 10.2;\n}\n\nfunction electricwindmillDisplay(tx) {\n   image(electricWindmillImg, this.x , 5, szex, szey); \/\/dont show with other windmills\n}\n    \n\nfunction bunny(bx) {\n    var  b = {x: bx, \n        right: bunnyRight,\n        display: bunnyDisplay};\n    return b;\n}\n\nfunction bunnyRight() {\n    return this.x + szex2 + width * 7.3;\n}\n\nfunction bunnyDisplay(tx) {\n   image(bunnyImg, this.x, 130, szex2, szey2);\n}\n\n\nfunction cat(cx) {\n    var  c = {x: cx, \n        right: catRight,\n        display: catDisplay};\n    return c;\n}\n\nfunction catRight() {\n    return this.x + width * 5.5;\n}\n\nfunction catDisplay(tx) {\n   image(catImg, this.x + 200, 160, 206.75, 125);\n}\n\n\n\n\n\nfunction setup() {\n    createCanvas(480, 280);\n    var sk = sky(1);\n    skys.push(sk);\n    var tul = tulips(1);\n    tulip.push(tul);\n    var ar = airballoon(1);\n    airballoons.push(ar);\n    var mount = mountain(1);\n    mountains.push(mount);\n    var bunn = bunny(1);\n    bunnys.push(bunn);\n    var kitten = cat(1);\n    cats.push(kitten);\n    var bid = bird(1);\n    birds.push(bid);\n    var tr = tree(1);\n    trees.push(tr);\n    var tre = treeLine(1);\n    treeLines.push(tre);\n    var wmb = windmillBottom(1);\n    windmillBottoms.push(wmb);\n    var fw = windmill(1);\n    fullWind.push(fw);\n    var ew = electricwindmill(1);\n    electric.push(ew);\n}\n\n\n\n\nfunction draw() {\n    noStroke();\n    \/\/SKY\n    for (var i = 0; i &lt; skys.length; i++) {\n        var s = skys[i];\n        image(skyImg, s.x - offset, 0, 500, 400);\/\/left\n    }\n    \/\/ clean up statement\n    if (skys.length &gt; 0 & skys[0].right() < offset) {\n        skys.shift();\n    }\n    \/\/ make a new sky\n    var lastSky = skys[skys.length-1];\n    if (lastSky.right() - offset &lt; width) {\n        var s = sky(lastSky.right()); \n        skys.push(s);\n}\n\n\n\/\/MOUNTAIN\n     for (var i = 0; i &lt; mountains.length; i++) {\n        var m = mountains[i];\n        image(mountainsImg, m.x - offset, -78, 827, 500);\n    }\n    \/\/ make a new mountain\n    var lastMountain = mountains[mountains.length-1];\n    if (lastMountain.right() - offset &lt; width) {\n        var m = mountain(lastMountain.right()); \n        mountains.push(m);\n}\n\n\n\/\/TREE\nfor (var i = 0; i &lt; trees.length; i++) {\n        var tr = trees[i];\n        image(tree1Img, tr.x - offset, 23, szex, szey);\n    }\n    \/\/ clean up statement\n    if (trees.length &gt; 0 & trees[0].right() < offset) {\n        trees.shift();\n    }\n    \/\/ make a new tree \n    var lastTree = trees[trees.length-1];\n    if (lastTree.right() - offset &lt; width) {\n        var tr = tree(lastTree.right()); \n        trees.push(tr);\n}\n   \n   \/\/TREELINE\nfor (var i = 0; i &lt; treeLines.length; i++) {\n        var tre = treeLines[i];\n        image(treeLineImg, tre.x - offset, 25, szex, szey); \/\/with mountains or without\n    }\n    \/\/ clean up statement\n    if (treeLines.length &gt; 0 & treeLines[0].right() < offset) {\n        treeLines.shift();\n    }\n    \/\/ make a new treeline\n    var lastTreeLine = treeLines[treeLines.length-1];\n    if (lastTreeLine.right() - offset &lt; width) {\n        var tre = treeLine(lastTreeLine.right()); \n        treeLines.push(tre);\n} \n\n\n\n\/\/WINDMILLBOTTOM\n    for (var i = 0; i &lt; windmillBottoms.length; i++) {\n        var wnd = windmillBottoms[i];\n        image(windmillBottomImg, wnd.x - offset, 87, szex2, szey2);\n    }\n    \/\/ clean up statement\n    if (windmillBottoms.length &gt; 0 & windmillBottoms[0].right() < offset) {\n        windmillBottoms.shift();\n    }\n    \/\/ make a new windmill\n    var lastwindmillBottom = windmillBottoms[windmillBottoms.length-1];\n    if (lastwindmillBottom.right() - offset &lt; width) {\n        var wnd = windmillBottom(lastwindmillBottom.right()); \n        windmillBottoms.push(wnd);\n}\n    \n\n\n\/\/ELECTRIC WINDMILL\nfor (var i = 0; i &lt; electric.length; i++) {\n        var ew = electric[i];\n        image(electricWindmillImg, ew.x - offset, 5, szex, szey); \/\/dont show with other windmills\n    }\n    \/\/ clean up statement\n    if (electric.length &gt; 0 & electric[0].right() < offset) {\n        electric.shift();\n    }\n    \/\/ make a new windmill\n    var lastElectricWindmill = electric[electric.length-1];\n    if (lastElectricWindmill.right() - offset &lt; width) {\n        var ew = electricwindmill(lastElectricWindmill.right()); \n        electric.push(ew);\n}\n    \n\n\/\/WINDMILL\nfor (var i = 0; i &lt; fullWind.length; i++) {\n        var full = fullWind[i];\n         image(fullWindmillImg, full.x - offset, 100, 248, 150); \/\/can be anytime show up\n    }\n    \/\/ clean up statement\n    if (fullWind.length &gt; 0 & fullWind[0].right() < offset) {\n        fullWind.shift();\n    }\n    \/\/ make a new windmill\n    var lastWindmill = fullWind[fullWind.length-1];\n    if (lastWindmill.right() - offset &lt; width) {\n        var full = windmill(lastWindmill.right()); \n        fullWind.push(full);\n}\n\n\n\n\/\/AIRBALLOONS\n    for (var i = 0; i &lt; airballoons.length; i++) {\n        var air = airballoons[i];\n        image(airballoonImg, air.x - offset, 110 - offset\/10, szex2, szey2);\n    }\n    \/\/ clean up statement\n    if (airballoons.length &gt; 0 & airballoons[0].right() < offset) {\n        airballoons.shift();\n    }\n    \/\/ make a new balloom\n    var lastAirballoon = airballoons[airballoons.length-1];\n    if (lastAirballoon.right() - offset &lt; width) {\n        var air = airballoon(lastAirballoon.right()); \n        airballoons.push(air);\n}\n\n\/\/background for tulips\nfor(var i = 0 ; i &lt; width; i ++){\n    fill(253, 218 - offset \/ 75, 42);\n    rect(0, 195, 480, 100);\n}\n\/\/slight change every time offset increases so slight won't notice till big change\n\n\n\n\n\/\/TULIPS\n    for (var i = 0; i &lt; tulip.length; i++) {\n        var t = tulip[i];\n        image(flowerImg, t.x - offset, 190, 900, 105);\/\/left\n    }\n\n    \/\/ clean up statement\n    if (tulip.length &gt; 0 & tulip[0].right() < offset) {\n        tulip.shift();\n    }\n\n    \/\/ make a new tulip\n    var lastTulip = tulip[tulip.length-1];\n    if (lastTulip.right() - offset &lt; width) {\n        var t = tulips(lastTulip.right()); \n        tulip.push(t);\n}\n\n\n\n\n\n\/\/BIRD ??NEEDS FIX\n for (var i = 0; i &lt; birds.length; i++) {\n        var bids = birds[i];\/\/need to change spawn pnt\n        image(birdImg, bids.x - (offset + offset), 0, 165.4, 100); \/\/move faster across the screen\n    }\n    \/\/ clean up statement\n    if (birds.length &gt; 0 & birds[0].right() < offset) {\n        birds.shift();\n    }\n    \/\/ make a new bird \/\/make less often\n    var lastBird = birds[birds.length-1];\n    if (lastBird.right() - (offset + offset) &lt; width) {\n        var bids = bird(lastBird.right()); \n        birds.push(bids);\n}\n\n\n\n\n\n    \/\/BUNNY\n for (var i = 0; i &lt; bunnys.length; i++) {\n        var buns = bunnys[i];\n        image(bunnyImg, buns.x - offset, 130, szex2, szey2);\n    }\n    \/\/ clean up statement\n    if (bunnys.length &gt; 0 & bunnys[0].right() < offset) {\n        bunnys.shift();\n    }\n    \/\/ make a new rabbit \/\/make less often\n    var lastBunny = bunnys[bunnys.length-1];\n    if (lastBunny.right() - offset &lt; width) {\n        var buns = bunny(lastBunny.right()); \n        bunnys.push(buns);\n}\n\n\n\n\n    \/\/CAT\n for (var i = 0; i &lt; cats.length; i++) {\n        var kittens = cats[i];\n        image(catImg, kittens.x - offset , 160, 206.75, 125);\n    }\n    \/\/ clean up statement\n    if (cats.length &gt; 0 & cats[0].right() < offset) {\n        cats.shift();\n    }\n    \/\/ make a new cat \/\/make less often\n    var lastCat = cats[cats.length-1];\n    if (lastCat.right() - offset &lt; width) {\n        var kittens = cat(lastCat.right()); \n        cats.push(kittens);\n}\n\n\n\n    offset ++;\n}\n<\/code><\/pre><\/p>\n\n\n\n<p><\/p><\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>I worked too hard on this project. I ended up drawing all of the images in my code on procreate, so I do not have many sketches except for some resizing issues. The code was easier to figure out than I thought, but because I decided to use so many elements it got repetitive fast, &hellip; <a href=\"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/2021\/11\/12\/landscape-tulip-fields\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Landscape: Tulip Fields&#8221;<\/span><\/a><\/p>\n","protected":false},"author":660,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[115,58],"tags":[],"_links":{"self":[{"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/posts\/68967"}],"collection":[{"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/users\/660"}],"replies":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/comments?post=68967"}],"version-history":[{"count":3,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/posts\/68967\/revisions"}],"predecessor-version":[{"id":68975,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/posts\/68967\/revisions\/68975"}],"wp:attachment":[{"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/media?parent=68967"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/categories?post=68967"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/15-104\/f2021\/wp-json\/wp\/v2\/tags?post=68967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}