{"id":13352,"date":"2026-11-05T00:51:55","date_gmt":"2026-11-05T00:51:55","guid":{"rendered":"https:\/\/aiper.com\/blogs\/?page_id=13352"},"modified":"2026-11-12T04:42:12","modified_gmt":"2026-11-12T04:42:12","slug":"rollrasen-rechner","status":"publish","type":"page","link":"https:\/\/aiper.com\/blogs\/de\/rollrasen-rechner\/","title":{"rendered":"Rollrasen-Rechner"},"content":{"rendered":"\n<style>#lawn-tool{max-width:960px;margin:24px auto;color:#243746}#lawn-tool *{box-sizing:border-box}#lawn-tool .fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:18px}#lawn-tool label{display:block;font-weight:600}#lawn-tool input,#lawn-tool textarea{display:block;width:100%;padding:12px;border:1px solid #9aacb5;border-radius:8px;margin-top:6px;font:inherit}#lawn-tool button{padding:12px 20px;margin:18px 10px 10px 0;border:2px solid #1ecad3;border-radius:8px;background:#1ecad3;color:#1a202c;cursor:pointer;font:inherit}#lawn-tool button[type=reset],#lawn-tool #copy-area{background:white}#lawn-tool button:focus-visible,#lawn-tool input:focus-visible,#lawn-tool textarea:focus-visible{outline:3px solid #9486f7;outline-offset:3px;color:#1a202c}#lawn-tool button:active{color:#1a202c}#lawn-tool .result{background:#edf7f8;border-left:4px solid #1ecad3;padding:18px;margin:16px 0;overflow-wrap:anywhere}#lawn-tool svg{width:100%;height:300px;border:1px solid #b8cbd2}#lawn-tool a{color:#08778b}<\/style><div id=\"lawn-tool\" lang=\"de\"><p>Berechnen Sie Rollen, Paletten und Ihr Budget anhand der gemessenen Fl\u00e4che und Lieferantenangaben.<\/p><form data-mode=\"sod\"><div class=\"fields\"><label>Rasenfl\u00e4che (m\u00b2)<input name=\"area\" type=\"number\" min=\"0\" step=\"any\" required value=\"100\"><\/label><label>Verschnitt (%)<input name=\"waste\" type=\"number\" min=\"0\" step=\"any\" required value=\"10\"><\/label><label>Fl\u00e4che pro St\u00fcck oder Rolle (m\u00b2)<input name=\"piece\" type=\"number\" min=\"0\" step=\"any\" required value=\"0.5\"><\/label><label>Fl\u00e4che pro Palette (m\u00b2)<input name=\"pallet\" type=\"number\" min=\"0\" step=\"any\" required value=\"50\"><\/label><label>Ihr Preis einschlie\u00dflich Verlegung pro m\u00b2 (0 ohne Budget)<input name=\"price\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><\/div><button type=\"submit\">Berechnen<\/button><button type=\"reset\">Zur\u00fccksetzen<\/button><\/form><div class=\"result\" role=\"status\" aria-live=\"polite\">Geben Sie Ihre Messwerte ein und starten Sie die Berechnung.<\/div><h2>So funktioniert der Rechner<\/h2><p>Bedarf = gemessene Fl\u00e4che \u00d7 (1 + Verschnitt \u00f7 100). St\u00fccke und Paletten sind alternative Bestelleinheiten und werden jeweils aufgerundet. Das Budget verwendet die Bedarfsfl\u00e4che und Ihren Preis, nicht die auf ganze Paletten aufgerundete Fl\u00e4che. Kl\u00e4ren Sie Mindestbestellmengen, Lieferung, Bodenvorbereitung und Steuern mit dem Lieferanten. Es wird kein Marktpreis angenommen.<\/p><h2>Einheiten und Eingaben<\/h2><p>Ersetzen Sie die Beispielwerte durch Messwerte. 1 ft = 0,3048 m; 1 sq ft = 0,09290304 m\u00b2; 1 Zoll = 25,4 mm; 1 US-Gallone = 3,785411784 Liter. Verwenden Sie f\u00fcr alle Preise dieselbe W\u00e4hrung. Bei einem Preis von null wird kein optionales Budget angezeigt.<\/p><h2>Passende Rasenratgeber<\/h2><ul><li><a href=\"https:\/\/aiper.com\/blogs\/de\/rasen-uebersaeen-anleitung\/\">Rasen richtig \u00fcbers\u00e4en: Eine Schritt-f\u00fcr-Schritt-Anleitung<\/a><\/li><li><a href=\"https:\/\/aiper.com\/blogs\/de\/rasen-topdressing-profi-methode-fuer-gesunden-boden\/\">Rasen-Topdressing: Die Profi-Methode f\u00fcr gesunden Boden<\/a><\/li><\/ul><h2>Weitere Rasenrechner<\/h2><p><a href=\"https:\/\/aiper.com\/blogs\/de\/rasenflaeche-rechner\/\">rasenfl\u00e4chen-rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasenbewaesserung-laufzeit-rechner\/\">rasenbew\u00e4sserungs- und laufzeitrechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/bewaesserungszonen-rechner\/\">bew\u00e4sserungszonen-rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasenmaehen-kostenrechner\/\">kostenrechner f\u00fcrs rasenm\u00e4hen<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasenmaehen-zeitrechner\/\">zeitrechner f\u00fcrs rasenm\u00e4hen<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasenkalk-rechner\/\">rasenkalk-rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/tropfbewaesserung-rechner\/\">tropfbew\u00e4sserungs-rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasensamen-rechner\/\">Grassamen-Rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/rasenduenger-rechner\/\">Rasend\u00fcnger-Rechner<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/de\/werkzeuge\/\">Werkzeuge<\/a><\/p><\/div><script>\/* SI units internally; no external services or weather assumptions. *\/\nfunction calculateLawn(mode,v){\n const n=k=>{if(v[k]===undefined||String(v[k]).trim()==='')throw Error(\"Geben Sie alle erforderlichen Messwerte ein.\");let x=Number(v[k]);if(!Number.isFinite(x)||x<0)throw Error(\"Verwenden Sie endliche, nicht negative Messwerte.\");return x;};\n const p=k=>{let x=n(k);if(x<=0)throw Error(\"Dieser Messwert muss gr\u00f6\u00dfer als null sein.\");return x;};\n const percent=k=>{let x=n(k);if(x>=100)throw Error(\"Der Prozentsatz muss unter 100 liegen.\");return x\/100;};\n let o;\n if(mode==='sod'){\n  let a=p('area'),w=n('waste');if(w>100)throw Error(\"Der Verschnitt muss zwischen 0 und 100 % liegen.\");\n  let q=a*(1+w\/100);o={required:q,pieces:Math.ceil(q\/p('piece')-1e-10),pallets:Math.ceil(q\/p('pallet')-1e-10)};\n  if(n('price')>0)o.budget=q*n('price');\n }else if(mode==='watering'){\n  let depth=Math.max(0,n('target')-n('rain')),minutes=depth\/p('rate')*60,water=p('area')*depth;\n  o={depth,minutes,litres:water};if(n('price')>0)o.budget=water\/1000*n('price');\n }else if(mode==='zone'){\n  let heads=p('heads');if(!Number.isInteger(heads))throw Error(\"Die Regnerzahl muss ganzzahlig sein.\");\n  let capacity=Math.floor(p('flow')*(1-percent('reserve'))\/p('nozzle'));\n  if(p('pressure')<p('required'))throw Error(\"Der Betriebsdruck liegt unter der D\u00fcsenanforderung.\");\n  if(capacity<1)throw Error(\"Der Durchfluss reicht mit dieser Reserve nicht f\u00fcr eine D\u00fcse.\");\n  o={capacity,zones:Math.ceil(heads\/capacity)};\n }else if(mode==='area'){\n  let polygons=JSON.parse(v.polygons);if(!Array.isArray(polygons)||!polygons.length)throw Error(\"Geben Sie gemessene Polygone ein.\");\n  let total=0;\n  for(let poly of polygons){\n   let pts=poly.points;if(!Array.isArray(pts)||pts.length<3)throw Error(\"Jedes Polygon ben\u00f6tigt mindestens drei Eckpunkte.\");\n   for(let pt of pts)if(!Array.isArray(pt)||pt.length!==2||!pt.every(x=>typeof x==='number'&&Number.isFinite(x)))throw Error(\"Jeder Eckpunkt ben\u00f6tigt zwei endliche Koordinaten.\");\n   \/\/ Reject crossings, touching edges, repeated vertices and degenerate edges.\n   let cross=(a,b,c)=>(b[0]-a[0])*(c[1]-a[1])-(b[1]-a[1])*(c[0]-a[0]);\n   let on=(a,b,c)=>Math.abs(cross(a,b,c))<1e-9&&c[0]>=Math.min(a[0],b[0])-1e-9&&c[0]<=Math.max(a[0],b[0])+1e-9&&c[1]>=Math.min(a[1],b[1])-1e-9&&c[1]<=Math.max(a[1],b[1])+1e-9;\n   for(let i=0;i<pts.length;i++)for(let j=i+1;j<pts.length;j++){\n    if(pts[i][0]===pts[j][0]&&pts[i][1]===pts[j][1])throw Error(\"Wiederholen Sie keine Eckpunkte.\");\n    if(j===i+1||i===0&&j===pts.length-1)continue;\n    let a=pts[i],b=pts[(i+1)%pts.length],c=pts[j],d=pts[(j+1)%pts.length];\n    if(cross(a,b,c)*cross(a,b,d)<0&&cross(c,d,a)*cross(c,d,b)<0||on(a,b,c)||on(a,b,d)||on(c,d,a)||on(c,d,b))throw Error(\"Polygonkanten d\u00fcrfen sich nicht kreuzen oder ber\u00fchren.\");\n   }\n   let a=Math.abs(pts.reduce((s,p,i)=>s+p[0]*pts[(i+1)%pts.length][1]-pts[(i+1)%pts.length][0]*p[1],0))\/2;\n   if(a<=0)throw Error(\"Die Polygonfl\u00e4che muss positiv sein.\");\n   if(poly.exclude!==undefined&&typeof poly.exclude!=='boolean')throw Error(\"Die Aussparung muss wahr oder falsch sein.\");\n   total+=poly.exclude?-a:a;\n  }\n  if(total<=0)throw Error(\"Die Nettofl\u00e4che muss positiv sein.\");o={area:total,sqft:total\/0.09290304};\n }else if(mode==='mowing-cost'){\n  let area=p('area'),frequency=p('frequency'),weeks=p('weeks');\n  if(frequency>7||weeks>52.1775)throw Error(\"Verwenden Sie h\u00f6chstens 7 Besuche pro Woche und 52,1775 Wochen pro Jahr.\");\n  let obstacle=n('obstacle');if(obstacle>100)throw Error(\"Der Zuschlag muss zwischen 0 und 100 % liegen.\");\n  let visit=Math.max(n('minimum'),n('base')+area\/100*n('rate')+n('edging'))*(1+obstacle\/100),visits=Math.ceil(frequency*weeks-1e-10);\n  o={visits};if(visit>0)Object.assign(o,{visit,month:visit*frequency*52.1775\/12,season:visit*visits});\n }else if(mode==='mowing-time'){\n  let area=p('area'),width=p('width')\/100,speed=p('speed')*1000,overlap=percent('overlap'),eff=p('efficiency')\/100;\n  if(eff>1)throw Error(\"Die Effizienz darf h\u00f6chstens 100 % betragen.\");\n  let productivity=width*(1-overlap)*speed*eff,minutes=area\/productivity*60;\n  o={effective:width*(1-overlap)*100,productivity,minutes,total:minutes+n('extra')};\n }else if(mode==='lime'){\n  let area=p('area'),rate=n('lab'),reference=p('reference'),product=p('product');\n  if(reference>200||product>200)throw Error(\"Neutralisationswerte m\u00fcssen Prozentwerte bis h\u00f6chstens 200 sein.\");\n  let adjusted=rate*reference\/product,total=area\/100*adjusted;\n  o={adjusted,total,bags:Math.ceil(total\/p('bag')-1e-10)};\n  let cap=n('cap');if(cap>0){let passes=Math.max(1,Math.ceil(adjusted\/cap-1e-10));o.passes=total>0?passes:0;o.perpass=total>0?total\/passes:0;}\n }else if(mode==='drip'){\n  let length=p('length'),spacing=p('spacing'),lines=p('lines');\n  if(!Number.isInteger(lines))throw Error(\"Die Leitungszahl muss ganzzahlig sein.\");\n  \/\/ Assumes the first emitter is one spacing from the inlet, not at x=0.\n  let emitters=Math.floor(length\/spacing+1e-10);if(emitters<1)throw Error(\"Jede Leitung muss mindestens einen Tropfer enthalten.\");\n  let flow=emitters*p('emitter'),capacity=p('supply')*60*(1-percent('reserve')),linesPerZone=Math.floor(capacity\/flow);\n  if(linesPerZone<1)throw Error(\"Der Durchfluss reicht nicht f\u00fcr eine vollst\u00e4ndige Tropfleitung.\");\n  let minutes=n('litres')\/p('emitter')*60,zones=Math.ceil(lines\/linesPerZone);\n  o={emitters,totalemitters:emitters*lines,flow:flow*lines\/60,linesperzone:linesPerZone,zones,minutes,totalminutes:minutes*zones,water:emitters*lines*n('litres')};\n }else throw Error(\"Unbekannter Rechner.\");\n if(Object.values(o).some(x=>!Number.isFinite(x)))throw Error(\"Die Messwerte \u00fcberschreiten den unterst\u00fctzten Bereich.\");\n return o;\n}\nif(typeof module!=='undefined')module.exports=calculateLawn;\n\n(()=>{const root=document.getElementById('lawn-tool'),form=root.querySelector('form'),result=root.querySelector('.result'),labels={\"required\": \"Bedarf einschlie\u00dflich Verschnitt (m\u00b2)\", \"pieces\": \"Ganze St\u00fccke oder Rollen\", \"pallets\": \"Ganze Paletten\", \"budget\": \"Budget in Ihrer W\u00e4hrung\"};let last=null;\nfunction polygons(text){return text.trim().split(\/\\n\\s*\\n\/).map(block=>{let rows=block.trim().split(\/\\n\/),exclude=\/^[-\u2013\u2014]$\/.test(rows[0].trim());if(exclude)rows.shift();return {exclude,points:rows.map(row=>{let parts=row.trim().split(\/\\s*,\\s*\/);if(parts.length!==2||parts.some(p=>!p.trim()))throw Error(\"Verwenden Sie pro Zeile eine x,y-Koordinate.\");return parts.map(Number);})};});}\nform.addEventListener('submit',e=>{e.preventDefault();last=null;try{let v=Object.fromEntries(new FormData(form));let polys;if(form.dataset.mode==='area'){polys=polygons(v.coordinates);v.polygons=JSON.stringify(polys);}let out=calculateLawn(form.dataset.mode,v);result.replaceChildren();for(let [key,value]of Object.entries(out)){let p=document.createElement('p');p.textContent=labels[key]+': '+value.toLocaleString(\"de\",{maximumFractionDigits:3});result.append(p);}if(polys){let svg=root.querySelector('#area-diagram'),all=polys.flatMap(p=>p.points),xs=all.map(p=>p[0]),ys=all.map(p=>p[1]),minx=Math.min(...xs),miny=Math.min(...ys),w=Math.max(...xs)-minx,h=Math.max(...ys)-miny;svg.replaceChildren();svg.setAttribute('viewBox',[minx-1,miny-1,w+2,h+2].join(' '));for(let poly of polys){let shape=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','polygon');shape.setAttribute('points',poly.points.map(p=>p.join(',')).join(' '));shape.setAttribute('fill',poly.exclude?'#fff':'#b4e8c1');shape.setAttribute('stroke','#147e91');shape.setAttribute('stroke-width',Math.max(w,h)\/200);svg.append(shape);}last=out.area;root.querySelector('#copy-area').disabled=false;}}\ncatch(err){result.textContent=err.message;if(root.querySelector('#copy-area'))root.querySelector('#copy-area').disabled=true;}});\nform.addEventListener('reset',()=>{last=null;result.textContent=\"Geben Sie Ihre Messwerte ein und starten Sie die Berechnung.\";let svg=root.querySelector('#area-diagram');if(svg)svg.replaceChildren();let b=root.querySelector('#copy-area');if(b)b.disabled=true;});\nlet copy=root.querySelector('#copy-area');if(copy)copy.addEventListener('click',async()=>{if(last===null)return;try{await navigator.clipboard.writeText(String(last));result.append(document.createTextNode(\" Fl\u00e4che in m\u00b2 kopiert.\"));}catch(e){result.append(document.createTextNode(\" Fl\u00e4che manuell kopieren: \"+last+' m\u00b2.'));}});\n})();\n(()=>{let r=document.getElementById('lawn-tool');r.querySelector('form').addEventListener('input',()=>{r.querySelector('.result').textContent=\"Geben Sie Ihre Messwerte ein und starten Sie die Berechnung.\";let b=r.querySelector('#copy-area');if(b)b.disabled=true;let s=r.querySelector('#area-diagram');if(s)s.replaceChildren();});})();<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Berechnen Sie Rollen, Paletten und Ihr Budget anhand der gemessenen Fl\u00e4che und Lieferantenangaben. Rasenfl\u00e4che (m\u00b2)Verschnitt (%)Fl\u00e4che pro St\u00fcck oder Rolle (m\u00b2)Fl\u00e4che pro Palette (m\u00b2)Ihr Preis einschlie\u00dflich Verlegung pro m\u00b2 (0 ohne Budget) BerechnenZur\u00fccksetzen Geben Sie Ihre Messwerte ein und starten Sie die Berechnung. So funktioniert der Rechner Bedarf = gemessene Fl\u00e4che \u00d7 (1 + Verschnitt [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"aiper_reading_time":1,"aiper_last_reviewed":"","aiper_reviewer":0,"aiper_related_ids":[],"aiper_layout":"","footnotes":""},"class_list":["post-13352","page","type-page","status-publish","hentry"],"lang":"de","translations":{"de":13352,"es":13354,"fr":13353,"en":13351},"_links":{"self":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/comments?post=13352"}],"version-history":[{"count":3,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13352\/revisions"}],"predecessor-version":[{"id":13459,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13352\/revisions\/13459"}],"wp:attachment":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/media?parent=13352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}