{"id":792,"date":"2025-07-18T14:05:30","date_gmt":"2025-07-18T05:05:30","guid":{"rendered":"https:\/\/barbegenerativediary.com\/en\/?p=792"},"modified":"2025-07-18T14:05:30","modified_gmt":"2025-07-18T05:05:30","slug":"verlet-integration","status":"publish","type":"post","link":"https:\/\/barbegenerativediary.com\/en\/tutorials\/verlet-integration\/","title":{"rendered":"Verlet Integration | A Stable and Natural Numerical Method for Simulating Motion"},"content":{"rendered":"\n<p><strong>The full sample code for this article is available for download on Patreon after following.<\/strong><br>(It uses openFrameworks for the implementation.)<br>\u2615 <strong>Support my Work:) \/  <a href=\"https:\/\/www.patreon.com\/barbe_generative_diary\/membership\" target=\"_blank\" rel=\"noopener\" title=\"\">Coffee Supplier on Patreon<\/a><\/strong><\/p>\n\n\n\n<p>This guide covers the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The basic concept and formula of Verlet integration<\/li>\n\n\n\n<li>Comparison with the Euler method<\/li>\n\n\n\n<li>Variants: Position Verlet, Velocity Verlet, and Leapfrog method<\/li>\n\n\n\n<li>Implementation examples in Processing<\/li>\n\n\n\n<li>Key considerations and limitations<\/li>\n<\/ul>\n\n\n\n<p>Whether you&#8217;re a beginner or a more advanced user, this article provides a practical overview for understanding and applying Verlet integration.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. What Is Verlet Integration?<\/h2>\n\n\n\n<p>Verlet integration is a numerical method used to compute the motion of objects over time, particularly well-suited for simulations that require <strong>energy conservation<\/strong> and <strong>natural dynamics<\/strong>. It calculates the next position based only on the current and previous positions along with the applied force.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Advantages of Verlet Integration:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Energy Stability<\/strong>: Prevents artificial gain or loss of energy over time<\/li>\n\n\n\n<li><strong>No Explicit Velocity Required<\/strong>: Simplifies calculation and leads to natural behavior<\/li>\n\n\n\n<li><strong>Lightweight and Responsive<\/strong>: Ideal for visual art, real-time systems, and interactive environments<\/li>\n<\/ul>\n\n\n\n<p>These features make it widely adopted in game development, generative art, and scientific simulations.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Mathematical Foundation<\/h2>\n\n\n\n<p>The core formula of Verlet integration updates the position based on previous and current positions: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"288\" data-src=\"https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-math-01.webp\" alt=\"\" class=\"wp-image-800 lazyload\" data-srcset=\"https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-math-01.webp 1024w, https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-math-01-300x84.webp 300w, https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-math-01-768x216.webp 768w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/288;\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>x(t+\u0394t)<\/strong> : Position at the next time step<\/li>\n\n\n\n<li><strong>x(t)<\/strong> : Current position<\/li>\n\n\n\n<li><strong>x(t\u2212\u0394t)<\/strong> : Previous position<\/li>\n\n\n\n<li><strong>a(t)<\/strong> : Current acceleration<\/li>\n\n\n\n<li><strong>\u0394t<\/strong> : Time step<\/li>\n<\/ol>\n\n\n\n<p>Rather than computing future positions from velocity like in Euler\u2019s method, Verlet uses a combination of:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Displacement from the previous step: <strong>(x(t)\u2212x(t\u2212\u0394t))<\/strong><\/li>\n\n\n\n<li>The influence of acceleration<\/li>\n<\/ul>\n\n\n\n<p>This results in a natural \u201cinertial\u201d motion plus force-driven behavior.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Comparison with the Euler Method<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Feature<\/th><th>Euler Method<\/th><th>Verlet Method<\/th><\/tr><\/thead><tbody><tr><td>Stability<\/td><td>\u2717 Low (can diverge)<\/td><td>\u2713 High (energy-conserving)<\/td><\/tr><tr><td>Simplicity<\/td><td>\u2713 Very simple<\/td><td>\u2717 Slightly more complex<\/td><\/tr><tr><td>Accuracy<\/td><td>Low<\/td><td>Medium to High<\/td><\/tr><tr><td>Use Cases<\/td><td>Prototypes<\/td><td>Realistic simulations<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Example: Euler can cause spring simulations to spiral out of control, while Verlet maintains natural oscillations.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Variants of Verlet Integration<\/h2>\n\n\n\n<p>Verlet integration has multiple variants tailored to different use cases. Here, we introduce three widely used forms, each with code examples in Processing:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Velocity Verlet (explicit velocity tracking)<\/h3>\n\n\n\n<p>Velocity Verlet is one of the most widely used time integration algorithms in molecular dynamics simulations. It explicitly maintains velocity and calculates the next velocity using the average of the current and new acceleration. This allows it to naturally handle velocity-dependent forces such as air resistance and friction. It is known for its stability and energy conservation properties, making it suitable for long-term simulations.<\/p>\n\n\n\n<p><strong>Formulas:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>x(t+\u0394t) = x(t) + v(t)\u0394t + 0.5\u00b7a(t)\u0394t\u00b2  <\/strong><\/li>\n\n\n\n<li><strong>a(t+\u0394t) = F(r(t+\u0394t)) \/ m  <\/strong><\/li>\n\n\n\n<li><strong>v(t+\u0394t) = v(t) + 0.5\u00b7(a(t) + a(t+\u0394t))\u0394t<\/strong><\/li>\n<\/ol>\n\n\n\n<p><strong>Pros:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Direct velocity access<\/li>\n\n\n\n<li>Highly stable and energy-conserving<\/li>\n\n\n\n<li>Time-reversible<\/li>\n<\/ul>\n\n\n\n<p><strong>Sample:<\/strong><\/p>\n\n\n\n<pre><code class=\"language-processing\">\nPVector position = new PVector(100, 100);\nPVector velocity = new PVector(0, 0);\nPVector acceleration = new PVector(0, 0.5);\n\nvoid update() {\n  position.add(PVector.mult(velocity, 1));\n  position.add(PVector.mult(acceleration, 0.5));               \/\/ 0.5 * a(t) * dt^2\uff08dt=1\uff09\n  PVector newAcc = new PVector(0, 0.5);\n  vel.add(PVector.add(acceleration, newAcc).mult(0.5));   \/\/ v(t+1) = v(t) + 0.5*(a(t)+a(t+1))\n  acceleration = newAcc;\n}\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Leapfrog Method (velocity offset by half-step)<\/h3>\n\n\n\n<p>The Leapfrog method evaluates position and velocity at staggered time steps\u2014position at integer time steps and velocity at half-integer time steps, like a \u201cleaping frog.\u201d<br>Because of this half-step offset between updates of position and velocity, Leapfrog achieves highly stable numerical integration over long periods, similar to Velocity Verlet. It is often used in game physics and particle systems.<strong>Formulas:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>v(t+\u0394t\/2)=v(t\u2212\u0394t\/2)+a(t)\u0394t<\/strong><\/li>\n\n\n\n<li><strong>x(t+\u0394t)=x(t)+v(t+\u0394t\/2)\u0394t<\/strong><\/li>\n\n\n\n<li><strong>a(t+\u0394t)=F(x(t+\u0394t)\u200b)\/m<\/strong><\/li>\n<\/ol>\n\n\n\n<p><strong>Pros:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>High stability<\/li>\n\n\n\n<li>Time-reversibility<\/li>\n\n\n\n<li>Slightly simpler than Velocity Verlet<\/li>\n<\/ul>\n\n\n\n<p><strong>Cons:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Requires handling half-step velocities<\/li>\n<\/ul>\n\n\n\n<p><strong>Sample:<\/strong><\/p>\n\n\n\n<pre><code class=\"language-processing\">\nPVector position = new PVector(100, 100);\nPVector velocity = new PVector(0, 0.5);\nPVector acceleration = new PVector(0, 0.5);\n\nvoid update() {\n  velocity.add(PVector.mult(acceleration, 1));         \/\/ v(t+1\/2)\n  position.add(velocity);                          \/\/ x(t+1)\n  acceleration = new PVector(0, 0.5);\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Position Verlet (simplest form)<\/h3>\n\n\n\n<p>Position Verlet is the simplest form of Verlet integration. It does not store velocity explicitly but estimates the next position using only the current and previous positions. Due to its strong energy conservation characteristics, it is well-suited for simulating systems like cloth and spring dynamics.<\/p>\n\n\n\n<p><strong>Formulas:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>x(t+\u0394t) = 2x(t) \u2212 x(t\u2212\u0394t) + a(t)\u0394t\u00b2<\/strong><\/li>\n\n\n\n<li><strong>a(t+\u0394t) = F(x(t+\u0394t)) \/ m\u200b<\/strong><\/li>\n<\/ol>\n\n\n\n<p><strong>Pros:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Very stable<\/li>\n\n\n\n<li>Time-reversible<\/li>\n\n\n\n<li>Compact and efficient<\/li>\n<\/ul>\n\n\n\n<p><strong>Cons:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Velocity must be inferred from positions<\/li>\n\n\n\n<li>Requires initialization of two positions<\/li>\n<\/ul>\n\n\n\n<p><strong>Sample:<\/strong><\/p>\n\n\n\n<pre><code class=\"language-processing\">\nPVector pos = new PVector(100, 100);\nPVector prevPos = pos.copy();\nPVector acc = new PVector(0, 0.5);\n\nvoid update() {\n  PVector temp = pos.copy();\n  PVector velocity = PVector.sub(pos, prevPos);\n  pos.add(velocity).add(acc);               \/\/ x(t+1) = x(t) + (x(t) - x(t-1)) + a(t)\n  prevPos = temp;\n}\n<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Summary Table<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Variant<\/th><th>Uses Velocity<\/th><th>Accuracy<\/th><th>Stability<\/th><th>Best For<\/th><\/tr><\/thead><tbody><tr><td>Velocity Verlet<\/td><td>Yes<\/td><td>High<\/td><td>High<\/td><td>Molecular dynamics, damping<\/td><\/tr><tr><td>Leapfrog<\/td><td>Half-step<\/td><td>Med-High<\/td><td>Very High<\/td><td>Game physics, particle systems<\/td><\/tr><tr><td>Position Verlet<\/td><td>No<\/td><td>Medium<\/td><td>High<\/td><td>Springs, ropes, cloth simulations<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Implementation Examples in Processing<\/h2>\n\n\n\n<p>Verlet integration allows for easy implementation of real-time physics visualizations.<br>Example code for visual implementation using Processing is available for <a href=\"https:\/\/www.patreon.com\/posts\/verlet-stable-134384235?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=postshare_creator&amp;utm_content=join_link\" target=\"_blank\" rel=\"noopener\" title=\"\"><strong>download on Patreon<\/strong><\/a>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Bouncing Ball (Position Verlet)<\/h3>\n\n\n\n<p><strong><a href=\"https:\/\/www.patreon.com\/posts\/verlet-stable-134384235?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=postshare_creator&amp;utm_content=join_link\" target=\"_blank\" rel=\"noopener\" title=\"\">sample_1_PositonVerlet<\/a><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"576\" data-src=\"https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-sample-1.webp\" alt=\"\" class=\"wp-image-801 lazyload\" data-srcset=\"https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-sample-1.webp 1024w, https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-sample-1-300x169.webp 300w, https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-sample-1-768x432.webp 768w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/576;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Cloth Simulation (Grid of Particles)<\/h3>\n\n\n\n<p><strong><a href=\"https:\/\/www.patreon.com\/posts\/verlet-stable-134384235?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=postshare_creator&amp;utm_content=join_link\" target=\"_blank\" rel=\"noopener\" title=\"\">sample_2_ClothSimulation<\/a><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"576\" data-src=\"https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-sample-2.webp\" alt=\"\" class=\"wp-image-802 lazyload\" data-srcset=\"https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-sample-2.webp 1024w, https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-sample-2-300x169.webp 300w, https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2025\/07\/Verlet-Integration-sample-2-768x432.webp 768w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/576;\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. Limitations and Considerations<\/h2>\n\n\n\n<p>While powerful, Verlet integration has its caveats:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>No Explicit Velocity in Position Verlet<\/strong>:<br>Hard to model air resistance or friction. Use Velocity Verlet or Leapfrog when velocity matters.<\/li>\n\n\n\n<li><strong>Not Ideal for Rigid Constraints<\/strong>:<br>Complex rigid bodies or rotation may require constraint solvers or hybrid methods.<\/li>\n\n\n\n<li><strong>Numerical Stability Depends on Time Step<\/strong>:<br>Large <code>\u0394t<\/code> leads to instability. Use smaller steps for high-frequency systems.<\/li>\n\n\n\n<li><strong>Energy Conservation May Delay Damping<\/strong>:<br>Additional damping must be introduced to stabilize behavior.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">7. Verlet integration<\/h2>\n\n\n\n<p>Verlet integration is an excellent tool for simulating natural motion and oscillation. It is simple, visually expressive, and works across a wide range of applications, from generative visuals and interactive art to game physics and scientific modeling.<\/p>\n\n\n\n<p>Reference:<a href=\"https:\/\/en.wikipedia.org\/wiki\/Verlet_integration\" target=\"_blank\" rel=\"noopener\" title=\"\">Wikipedia Verlet integration<\/a><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"MinkowskiDistance-05\"><em>Recommended Book \/ Generative art for beginner<\/em><\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1024\" height=\"576\" data-src=\"https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2023\/09\/GenerativeArtProcessing.webp\" alt=\"\" class=\"wp-image-327 lazyload\" data-srcset=\"https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2023\/09\/GenerativeArtProcessing.webp 1024w, https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2023\/09\/GenerativeArtProcessing-300x169.webp 300w, https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2023\/09\/GenerativeArtProcessing-768x432.webp 768w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/576;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/amzn.to\/3rBeaOZ\" target=\"_blank\" rel=\"noreferrer noopener\">Generative Art: A Practical Guide Using Processing<\/a><a href=\"https:\/\/amzn.to\/45Xzptl\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;<\/a>\u2013 Matt Pearson<\/h3>\n\n\n\n<p>Generative Art presents both the techniques and the beauty of algorithmic art. In it, you\u2019ll find dozens of high-quality examples of generative art, along with the specific steps the author followed to create each unique piece using the Processing programming language. The book includes concise tutorials for each of the technical components required to create the book\u2019s images, and it offers countless suggestions for how you can combine and reuse the various techniques to create your own works.<\/p>\n\n\n\n<p>Purchase of the print book comes with an offer of a free PDF, ePub, and Kindle eBook from Manning. Also available is all code from the book.<br>\u2014\u2013<br>\u25ba&nbsp;<strong><a href=\"https:\/\/amzn.to\/3rBeaOZ\" target=\"_blank\" rel=\"noreferrer noopener\">Generative Art: A Practical Guide Using Processing<\/a><\/strong>&nbsp;\u2013 Matt Pearson<br>Publication date: 2011. July<\/p>\n\n\n\n<p>\u00a0<strong>Support my Website<\/strong><br>By using our affiliate links, you\u2019re helping my content and allows me to keep creating valuable articles. I appreciate it so much:)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"BGD_SOUNDS\"><em>BGD_SOUNDS (barbe_generative_diary SOUNDS)<\/em><\/h2>\n\n\n\n<p>barbe_generative_diary SOUNDS will start sharing and selling a variety of field recordings collected for use in my artwork \u201cSound Visualization\u201d experiments. All sounds are royalty-free.<\/p>\n\n\n\n<p><a href=\"https:\/\/barbegenerativediary.bandcamp.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Link \/ BGD_SOUNDS on bandcamp<\/strong><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1024\" height=\"731\" data-src=\"https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2024\/07\/240801_bandcamp-top-BGD_SOUNDS.webp\" alt=\"\" class=\"wp-image-554 lazyload\" data-srcset=\"https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2024\/07\/240801_bandcamp-top-BGD_SOUNDS.webp 1024w, https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2024\/07\/240801_bandcamp-top-BGD_SOUNDS-300x214.webp 300w, https:\/\/barbegenerativediary.com\/en\/wp-content\/uploads\/2024\/07\/240801_bandcamp-top-BGD_SOUNDS-768x548.webp 768w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/731;\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>This article introduces &#8220;Verlet integration,&#8221; a numerical method essential in physics simulations. Known for its high energy conservation and smooth, stable motion reproduction, Verlet integration finds widespread use in game physics, cloth and rope simulation, and even molecular dynamics.<\/p>\n","protected":false},"author":1,"featured_media":803,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,13],"tags":[],"class_list":["post-792","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-processing-tutorials","category-tutorials"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/barbegenerativediary.com\/en\/wp-json\/wp\/v2\/posts\/792","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/barbegenerativediary.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/barbegenerativediary.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/barbegenerativediary.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/barbegenerativediary.com\/en\/wp-json\/wp\/v2\/comments?post=792"}],"version-history":[{"count":9,"href":"https:\/\/barbegenerativediary.com\/en\/wp-json\/wp\/v2\/posts\/792\/revisions"}],"predecessor-version":[{"id":807,"href":"https:\/\/barbegenerativediary.com\/en\/wp-json\/wp\/v2\/posts\/792\/revisions\/807"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/barbegenerativediary.com\/en\/wp-json\/wp\/v2\/media\/803"}],"wp:attachment":[{"href":"https:\/\/barbegenerativediary.com\/en\/wp-json\/wp\/v2\/media?parent=792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/barbegenerativediary.com\/en\/wp-json\/wp\/v2\/categories?post=792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/barbegenerativediary.com\/en\/wp-json\/wp\/v2\/tags?post=792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}