Preparing Ad...

Membangun Kalkulator Area Geometri Javascript: Tutorial Pengembang Interaktif 2025

Nguyễn Anh Quân - Developer of calculators.im

Anh Quân

Creator

Preparing Ad...

Daftar Isi

Panduan mendalam untuk membuat kalkulator geometri interaktif Anda sendiri menggunakan JavaScript, lengkap dengan perhitungan area untuk poligon sederhana dan kompleks.

PENDAHULUAN: Mengapa membangun kalkulator geometri?

Perhitungan geometri membentuk dasar dari berbagai aplikasi dunia nyata-dari survei lahan dan arsitektur hingga pengembangan game dan sistem informasi geografis.Sebagai pengembang, kita sering membutuhkan alat yang andal untuk menghitung area berbagai bentuk.Meskipun ada banyak kalkulator online yang tersedia, membangun penawaran Anda sendiri beberapa keuntungan:

  1. Kustomisasi lengkap agar sesuai dengan persyaratan proyek spesifik Anda
  2. Fleksibilitas integrasi dengan aplikasi web Anda yang ada
  3. Kesempatan belajar untuk memahami koordinat geometri dan pemikiran algoritmik
  4. Peningkatan Portofolio Untuk Menampilkan Keterampilan JavaScript Anda

Dalam tutorial komprehensif ini, kami akan berjalan melalui proses membangun kalkulator area geometri interaktif yang kuat menggunakan JavaScript.Pada akhirnya, Anda akan memiliki aplikasi web yang berfungsi penuh yang secara akurat menghitung luas poligon sederhana dan kompleks menggunakan geometri koordinat.

Apa yang akan kita bangun

Kalkulator geometri kita akan:

  • Memungkinkan pengguna untuk memasukkan koordinat poligon melalui antarmuka intuitif
  • Hitung area untuk poligon reguler dan tidak teratur
  • Mendukung beberapa unit pengukuran
  • Visualisasikan bentuk menggunakan kanvas html
  • Memberikan hasil yang jelas dan akurat dengan pembulatan yang tepat
  • Bekerja di semua browser dan perangkat utama
Geometry Area Calculator Interface

Pratinjau Kalkulator Area Geometri JavaScript terakhir kami dengan Interput Poligon Interaktif

Prasyarat

Untuk mengikuti tutorial ini, Anda harus memiliki:

  • Pemahaman Dasar tentang HTML, CSS, dan JavaScript
  • Keakraban dengan manipulasi DOM
  • Editor atau IDE Teks (VS Code, Teks Sublime, dll.)
  • Browser web modern
  • Opsional: Pemahaman Dasar -Dasar Geometri Koordinat

Memahami matematika di balik perhitungan area

Sebelum menyelam ke dalam kode, mari kita pahami prinsip -prinsip matematika yang memberi daya pada kalkulator geometri kita.

Formula Shoelace untuk Area Poligon

Untuk menghitung luas poligon (biasa atau tidak teratur), kami akan menggunakan formula Shoelace, juga dikenal sebagai formula surveyor atau formula area Gauss.Algoritma yang kuat ini berfungsi untuk setiap poligon yang ditentukan oleh simpulnya, terlepas dari seberapa rumit bentuknya.

Formula dinyatakan sebagai:

Area = 0.5 * |∑(x_i * y_(i+1) - x_(i+1) * y_i)|

Di mana:

  • x_i and y_i are the coordinates of the i-th vertex
  • Rumus menghitung setengah dari jumlah produk silang dari simpul yang berdekatan
  • Nilai absolut memastikan area positif

Formula ini bekerja dengan "berjalan" di sekeliling poligon, menghitung produk silang antara titik -titik berturut -turut.Ketika kami menyimpulkan ini dan membagi dengan 2, kami mendapatkan area poligon.

Pengaturan Proyek

Mari kita mulai dengan mengatur struktur dasar kalkulator geometri kita:

Struktur HTML

Create a new file named index.html with the following structure:

<!DOCTYPE html>
<html lang="en">
<head>
 	<meta charset="UTF-8">
 	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>Geometry Area Calculator</title>
 	<link rel="stylesheet" href="styles.css">
</head>
<body>
 	<div class="calculator-container">
 	 	<h2>Geometry Area Calculator</h2>
 	 	<div class="input-section">
 	 	 	 	<h2>Enter Polygon Coordinates</h2>
 	 	 	 	<p>Click on the canvas to add points or enter them manually below.</p>
 	 	 	<div class="canvas-container">
 	 	 	<canvas id="polygon-canvas" width="400" height="400"></canvas>
 	 	 	<button id="clear-canvas">Clear Canvas</button>
 	 	 	 	</div>
 	 	 	 	<div class="manual-input">
 	 	 	<div class="coordinates-container" id="coordinates-list">
 	 	<div class="coordinate-pair">
 	 	 	<input type="number" placeholder="X1" class="x-coord">
 	 	 	<input type="number" placeholder="Y1" class="y-coord">
 	 	 	<button class="remove-point">×</button>
 	 	</div>
 	 	 	</div>
 	 	 	<button id="add-point">Add Point</button>
 	 	 	 	</div>
 	 	 	 	<div class="units-selection">
 	 	 	<label for="units">Measurement Units:</label>
 	 	 	<select id="units">
 	 	<option value="pixels">Pixels</option>
 	 	<option value="meters">Meters</option>
 	 	<option value="feet">Feet</option>
 	 	 	</select>
 	 	 	 	</div>
 	 	 	 	<button id="calculate-area">Calculate Area</button>
 	 	</div>
 	 	<div class="results-section" id="results">
 	 	 	 	<!-- Results will be displayed here -->
 	 	</div>
 	</div>
 	<script src="script.js"></script>
</body>
</html>

Styling CSS

Create a file named styles.css for styling our calculator:

* {
 	box-sizing: border-box;
 	margin: 0;
 	padding: 0;
 	font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
 	background-color: #f5f5f5;
 	padding: 20px;
}
.calculator-container {
 	max-width: 800px;
 	margin: 0 auto;
 	background-color: white;
 	padding: 30px;
 	border-radius: 10px;
 	box-shadow: 0 0 15px rgba(0, 0, 0, 0.1);
}
h1 {
 	text-align: center;
 	color: #333;
 	margin-bottom: 30px;
}
h2 {
 	font-size: 1.5rem;
 	margin-bottom: 15px;
 	color: #444;
}
p {
 	margin-bottom: 20px;
 	color: #666;
}
.canvas-container {
 	margin-bottom: 30px;
 	text-align: center;
}
canvas {
 	border: 1px solid #ccc;
 	background-color: #f9f9f9;
}
.manual-input {
 	margin-bottom: 25px;
}
.coordinates-container {
 	max-height: 200px;
 	overflow-y: auto;
 	margin-bottom: 15px;
}
.coordinate-pair {
 	display: flex;
 	margin-bottom: 8px;
 	align-items: center;
}
input {
 	width: 80px;
 	padding: 8px;
 	margin-right: 10px;
 	border: 1px solid #ccc;
 	border-radius: 4px;
}
button {
 	padding: 8px 15px;
 	background-color: #4CAF50;
 	color: white;
 	border: none;
 	border-radius: 4px;
 	cursor: pointer;
 	transition: background-color 0.3s;
}
button:hover {
 	background-color: #45a049;
}
.remove-point {
 	background-color: #f44336;
 	padding: 8px 12px;
}
.remove-point:hover {
 	background-color: #d32f2f;
}
#clear-canvas {
 	margin-top: 10px;
}
.units-selection {
 	margin-bottom: 25px;
}
select {
 	padding: 8px;
 	border: 1px solid #ccc;
 	border-radius: 4px;
}
.results-section {
 	margin-top: 30px;
 	padding: 20px;
 	background-color: #f0f8ff;
 	border-radius: 6px;
 	display: none;
}
.results-section.active {
 	display: block;
}
.area-result {
 	font-size: 1.3rem;
 	margin-bottom: 15px;
}
.calculation-steps {
 	margin-top: 20px;
 	padding: 15px;
 	background-color: #f5f5f5;
 	border-radius: 4px;
 	font-family: monospace;
}

Implementasi JavaScript

Now, let's create the script.js file that will power our geometry area calculator:

// DOM Elements
const canvas = document.getElementById('polygon-canvas');
const ctx = canvas.getContext('2d');
const clearCanvasBtn = document.getElementById('clear-canvas');
const addPointBtn = document.getElementById('add-point');
const coordinatesList = document.getElementById('coordinates-list');
const calculateBtn = document.getElementById('calculate-area');
const resultsSection = document.getElementById('results');
const unitsSelect = document.getElementById('units');
// Global Variables
let points = [];
let isDragging = false;
let dragIndex = -1;
// Canvas Setup
function setupCanvas() {
 	// Set canvas coordinate system (origin at center)
 	ctx.translate(canvas.width / 2, canvas.height / 2);
 	drawGrid();
 	 	// Event listeners for canvas interaction
 	canvas.addEventListener('mousedown', handleMouseDown);
 	canvas.addEventListener('mousemove', handleMouseMove);
 	canvas.addEventListener('mouseup', () => isDragging = false);
 	 	// Redraw canvas initially
 	redrawCanvas();
}
// Draw coordinate grid
function drawGrid() {
 	const width = canvas.width;
 	const height = canvas.height;
 	 	ctx.strokeStyle = '#e0e0e0';
 	ctx.lineWidth = 1;
 	 	// Vertical lines
 	for (let x = -width/2; x <= width/2; x += 20) {
 	 	ctx.beginPath();
 	 	ctx.moveTo(x, -height/2);
 	 	ctx.lineTo(x, height/2);
 	 	ctx.stroke();
 	}
 	 	// Horizontal lines
 	for (let y = -height/2; y <= height/2; y += 20) {
 	 	ctx.beginPath();
 	 	ctx.moveTo(-width/2, y);
 	 	ctx.lineTo(width/2, y);
 	 	ctx.stroke();
 	}
 	 	// X and Y axes (darker)
 	ctx.strokeStyle = '#aaa';
 	ctx.lineWidth = 2;
 	 	// X-axis
 	ctx.beginPath();
 	ctx.moveTo(-width/2, 0);
 	ctx.lineTo(width/2, 0);
 	ctx.stroke();
 	 	// Y-axis
 	ctx.beginPath();
 	ctx.moveTo(0, -height/2);
 	ctx.lineTo(0, height/2);
 	ctx.stroke();
}
// Handle mouse down event on canvas
function handleMouseDown(e) {
 	const rect = canvas.getBoundingClientRect();
 	const scaleX = canvas.width / rect.width;
 	const scaleY = canvas.height / rect.height;
 	 	const canvasX = (e.clientX - rect.left) * scaleX - canvas.width / 2;
 	const canvasY = (e.clientY - rect.top) * scaleY - canvas.height / 2;
 	 	// Check if clicking near an existing point (for dragging)
 	for (let i = 0; i < points.length; i++) {
 	 	const dx = points[i].x - canvasX;
 	 	const dy = points[i].y - canvasY;
 	 	const distance = Math.sqrt(dx * dx + dy * dy);
 	 	 	if (distance < 10) {
 	 	 	 	isDragging = true;
 	 	 	 	dragIndex = i;
 	 	 	 	return;
 	 	}
 	}
 	 	// If not dragging, add a new point
 	points.push({x: canvasX, y: canvasY});
 	updateCoordinateInputs();
 	redrawCanvas();
}
// Handle mouse move event on canvas
function handleMouseMove(e) {
 	if (!isDragging || dragIndex === -1) return;
 	 	const rect = canvas.getBoundingClientRect();
 	const scaleX = canvas.width / rect.width;
 	const scaleY = canvas.height / rect.height;
 	 	const canvasX = (e.clientX - rect.left) * scaleX - canvas.width / 2;
 	const canvasY = (e.clientY - rect.top) * scaleY - canvas.height / 2;
 	 	points[dragIndex] = {x: canvasX, y: canvasY};
 	updateCoordinateInputs();
 	redrawCanvas();
}
// Redraw the canvas with all points and connections
function redrawCanvas() {
 	// Clear the canvas
 	ctx.clearRect(-canvas.width/2, -canvas.height/2, canvas.width, canvas.height);
 	 	// Redraw the grid
 	drawGrid();
 	 	if (points.length === 0) return;
 	 	// Draw the polygon
 	ctx.beginPath();
 	ctx.moveTo(points[0].x, points[0].y);
 	 	for (let i = 1; i < points.length; i++) {
 	 	ctx.lineTo(points[i].x, points[i].y);
 	}
 	 	// Connect back to the first point if we have at least 3 points
 	if (points.length >= 3) {
 	 	ctx.lineTo(points[0].x, points[0].y);
 	 	 	// Fill the polygon with a semi-transparent color
 	 	ctx.fillStyle = 'rgba(76, 175, 80, 0.2)';
 	 	ctx.fill();
 	}
 	 	// Draw the polygon outline
 	ctx.strokeStyle = '#4CAF50';
 	ctx.lineWidth = 2;
 	ctx.stroke();
 	 	// Draw the points
 	for (let i = 0; i < points.length; i++) {
 	 	ctx.beginPath();
 	 	ctx.arc(points[i].x, points[i].y, 5, 0, Math.PI * 2);
 	 	ctx.fillStyle = '#4CAF50';
 	 	ctx.fill();
 	 	 	// Label the points
 	 	ctx.fillStyle = '#333';
 	 	ctx.font = '12px Arial';
 	 	ctx.fillText(`P${i+1}`, points[i].x + 8, points[i].y - 8);
 	}
}
// Update the coordinate inputs based on canvas points
function updateCoordinateInputs() {
 	// Clear all existing inputs
 	coordinatesList.innerHTML = '';
 	 	// Add new inputs for each point
 	for (let i = 0; i < points.length; i++) {
 	 	const pair = document.createElement('div');
 	 	pair.className = 'coordinate-pair';
 	 	 	const xInput = document.createElement('input');
 	 	xInput.type = 'number';
 	 	xInput.className = 'x-coord';
 	 	xInput.placeholder = `X${i+1}`;
 	 	xInput.value = Math.round(points[i].x);
 	 	xInput.dataset.index = i;
 	 	 	const yInput = document.createElement('input');
 	 	yInput.type = 'number';
 	 	yInput.className = 'y-coord';
 	 	yInput.placeholder = `Y${i+1}`;
 	 	yInput.value = Math.round(points[i].y);
 	 	yInput.dataset.index = i;
 	 	 	const removeBtn = document.createElement('button');
 	 	removeBtn.className = 'remove-point';
 	 	removeBtn.textContent = '×';
 	 	removeBtn.dataset.index = i;
 	 	 	pair.appendChild(xInput);
 	 	pair.appendChild(yInput);
 	 	pair.appendChild(removeBtn);
 	 	coordinatesList.appendChild(pair);
 	 	 	// Event listeners for manual input changes
 	 	xInput.addEventListener('change', updatePointFromInput);
 	 	yInput.addEventListener('change', updatePointFromInput);
 	 	removeBtn.addEventListener('click', removePoint);
 	}
}
// Update a point from manual input
function updatePointFromInput(e) {
 	const index = parseInt(e.target.dataset.index);
 	const value = parseFloat(e.target.value);
 	 	if (isNaN(value)) return;
 	 	if (e.target.className === 'x-coord') {
 	 	points[index].x = value;
 	} else {
 	 	points[index].y = value;
 	}
 	 	redrawCanvas();
}
// Remove a point
function removePoint(e) {
 	const index = parseInt(e.target.dataset.index);
 	points.splice(index, 1);
 	updateCoordinateInputs();
 	redrawCanvas();
}
// Add a new point via button
function addNewPoint() {
 	// Add a new point at (0, 0) or near the last point if one exists
 	if (points.length > 0) {
 	 	const lastPoint = points[points.length - 1];
 	 	points.push({x: lastPoint.x + 20, y: lastPoint.y + 20});
 	} else {
 	 	points.push({x: 0, y: 0});
 	}
 	 	updateCoordinateInputs();
 	redrawCanvas();
}
// Clear all points
function clearCanvas() {
 	points = [];
 	updateCoordinateInputs();
 	redrawCanvas();
 	resultsSection.style.display = 'none';
}
// Calculate area using the Shoelace formula
function calculatePolygonArea(vertices) {
 	if (vertices.length < 3) return 0;
 	 	let area = 0;
 	const n = vertices.length;
 	 	for (let i = 0; i < n; i++) {
 	 	const j = (i + 1) % n;
 	 	area += vertices[i].x * vertices[j].y;
 	 	area -= vertices[j].x * vertices[i].y;
 	}
 	 	return Math.abs(area / 2);
}
// Display the calculation results
function displayResults() {
 	if (points.length < 3) {
 	 	alert("You need at least 3 points to calculate area.");
 	 	return;
 	}
 	 	const area = calculatePolygonArea(points);
 	const selectedUnit = unitsSelect.value;
 	 	let unitSymbol = 'px²';
 	let convertedArea = area;
 	 	// Apply unit conversions if needed
 	if (selectedUnit === 'meters') {
 	 	unitSymbol = 'm²';
 	 	// Assuming 1 pixel = 0.01 meter for example
 	 	convertedArea = area * 0.0001;
 	} else if (selectedUnit === 'feet') {
 	 	unitSymbol = 'ft²';
 	 	// Assuming 1 pixel = 0.0328 feet
 	 	convertedArea = area * 0.001;
 	}
 	 	// Format the result
 	const formattedArea = convertedArea.toFixed(2);
 	 	// Create the result HTML
 	let resultHTML = `
 	 	<h2>Calculation Results</h2>
 	 	<div class="area-result">
 	 	 	 	<strong>Polygon Area:</strong> ${formattedArea} ${unitSymbol}
 	 	</div>
 	 	<p>Based on ${points.length} vertices</p>
 	 	 	<div class="calculation-steps">
 	 	 	 	<h3>Calculation Steps:</h3>
 	 	 	 	<p>Using the Shoelace formula: A = 0.5 × |∑(xᵢyᵢ₊₁ − xᵢ₊₁yᵢ)|</p>
 	 	 	 	<ol>
 	`;
 	 	// Add the calculation steps
 	for (let i = 0; i < points.length; i++) {
 	 	const j = (i + 1) % points.length;
 	 	const term = (points[i].x * points[j].y - points[j].x * points[i].y).toFixed(2);
 	 	resultHTML += `<li>Step ${i+1}: (${points[i].x} × ${points[j].y}) - (${points[j].x} × ${points[i].y}) = ${term}</li>`;
 	}
 	 	resultHTML += `
 	 	 	 	</ol>
 	 	 	 	<p>Summing all steps and taking absolute value: ${Math.abs(area).toFixed(2)}</p>
 	 	 	 	<p>Dividing by 2: ${(Math.abs(area)/2).toFixed(2)}</p>
 	 	</div>
 	`;
 	 	resultsSection.innerHTML = resultHTML;
 	resultsSection.style.display = 'block';
 	resultsSection.scrollIntoView({ behavior: 'smooth' });
}
// Initialize the application
function init() {
 	setupCanvas();
 	 	// Event listeners
 	clearCanvasBtn.addEventListener('click', clearCanvas);
 	addPointBtn.addEventListener('click', addNewPoint);
 	calculateBtn.addEventListener('click', displayResults);
}
// Start the app when the page loads
window.addEventListener('load', init);
Polygon Area Calculation with Shoelace Formula

Representasi visual tentang bagaimana rumus Shoelace menghitung luas poligon

Memahami Komponen Utama

Mari kita uraikan komponen utama kalkulator area geometri kami:

Interaksi kanvas

Kalkulator kami menggunakan elemen kanvas HTML untuk pembuatan poligon interaktif.Pengguna dapat:

  1. Klik pada kanvas untuk menambahkan poin
  2. Seret titik yang ada untuk menyesuaikan posisi
  3. Lihat visualisasi poligon waktu nyata
  4. Lihat kisi koordinat untuk referensi

Kanvas diatur dengan sistem koordinat di mana (0,0) berada di tengah, membuatnya intuitif bagi pengguna untuk bekerja dengan koordinat positif dan negatif.

Koordinat Manajemen Input

Pengguna dapat memasukkan koordinat dengan dua cara:

  1. Input Visual: Klik langsung di kanvas untuk menempatkan titik
  2. Input Manual: Masukkan koordinat yang tepat di bidang input

Dua metode input disinkronkan, memungkinkan untuk penempatan visual intuitif dan input numerik yang tepat.

Implementasi Algoritma Shoelace

Inti dari kalkulator kami adalah implementasi rumus Shoelace:

function calculatePolygonArea(vertices) {
 	if (vertices.length < 3) return 0;
 	 	let area = 0;
 	const n = vertices.length;
 	 	for (let i = 0; i < n; i++) {
 	 	const j = (i + 1) % n;
 	 	area += vertices[i].x * vertices[j].y;
 	 	area -= vertices[j].x * vertices[i].y;
 	}
 	 	return Math.abs(area / 2);
}

Fungsi ini:

  1. Mengambil serangkaian koordinat verteks
  2. Loop melalui setiap titik dan titik berikutnya (membungkus ke titik pertama)
  3. Menerapkan perhitungan produk silang
  4. Mengambil nilai absolut dan membagi dengan 2 untuk mendapatkan area akhir

Keindahan algoritma ini adalah bahwa ia bekerja untuk poligon apa pun, terlepas dari apakah itu cembung atau cekung, asalkan tidak memotong dirinya sendiri.

Menambahkan fitur canggih

Sekarang kita memiliki kalkulator dasar yang berfungsi, mari kita perluas dengan beberapa fitur canggih:

Konversi unit

Kalkulator kami mendukung berbagai unit pengukuran:

  1. Piksel: untuk pengukuran berbasis layar
  2. Meter: untuk pengukuran metrik dunia nyata
  3. Kaki: untuk pengukuran kekaisaran

Konversi unit diterapkan setelah perhitungan area:

// Apply unit conversions if needed
if (selectedUnit === 'meters') {
 	unitSymbol = 'm²';
 	// Assuming 1 pixel = 0.01 meter for example
 	convertedArea = area * 0.0001;
} else if (selectedUnit === 'feet') {
 	unitSymbol = 'ft²';
 	// Assuming 1 pixel = 0.0328 feet
 	convertedArea = area * 0.001;
}

Anda dapat menyesuaikan faktor konversi berdasarkan persyaratan spesifik Anda.

Unit Conversion Interface

Antarmuka kalkulator yang menunjukkan opsi konversi unit untuk sistem pengukuran yang berbeda

Langkah perhitungan terperinci

Untuk membantu pengguna memahami bagaimana area dihitung, kami memberikan rincian terperinci dari langkah -langkah perhitungan:

// Add the calculation steps
for (let i = 0; i < points.length; i++) {
 	const j = (i + 1) % points.length;
 	const term = (points[i].x * points[j].y - points[j].x * points[i].y).toFixed(2);
 	resultHTML += `<li>Step ${i+1}: (${points[i].x} × ${points[j].y}) - (${points[j].x} × ${points[i].y}) = ${term}</li>`;
}

Transparansi ini membantu pengguna memverifikasi hasil dan mempelajari tentang prinsip -prinsip matematika di balik perhitungan area poligon.

Pengujian dan validasi

Sebelum mempertimbangkan kalkulator geometri kami lengkap, mari kita mengujinya dengan beberapa bentuk yang diketahui untuk memverifikasi keakuratannya:

Test Case 1: Rectangle

Sebuah persegi panjang sederhana dengan simpul pada (0,0), (100,0), (100,50), dan (0,50) harus memiliki luas 5.000 unit persegi.

Test Case 2: Triangle

Segitiga dengan simpul pada (0,0), (50.100), dan (100,0) harus memiliki luas 5.000 unit persegi.

Kasus Uji 3: Poligon Tidak Teratur

Poligon tidak teratur dengan simpul pada (0,0), (50.100), (100,50), (75,25), dan (25,25) harus memberi kita area yang benar berdasarkan formula sepatu.

Untuk setiap test case, kalkulator kami harus:

  1. Izinkan input yang mudah dari koordinat tes
  2. Hitung area yang benar
  3. Tampilkan langkah perhitungan untuk verifikasi

Mengoptimalkan perangkat seluler

Untuk membuat kalkulator geometri kami sepenuhnya responsif, kami dapat menambahkan peningkatan berikut:

  1. Dukungan sentuh untuk interaksi kanvas
  2. Tata letak responsif yang beradaptasi dengan ukuran layar yang berbeda
  3. Antarmuka yang disederhanakan untuk layar yang lebih kecil

Penambahan ini memastikan kalkulator kami dapat digunakan pada smartphone dan tablet, membuatnya dapat diakses oleh pengguna di semua perangkat.

Peningkatan tambahan

Untuk membuat kalkulator area geometri kami semakin kuat, pertimbangkan untuk mengimplementasikan fitur -fitur tambahan ini:

Bentuk preset

Tambahkan tombol untuk dengan cepat membuat bentuk umum seperti:

  • Persegi
  • Persegi panjang
  • Segi tiga
  • Lingkaran (didekati sebagai poligon biasa)
  • Poligon biasa (Pentagon, Hexagon, dll.)

Perhitungan Area untuk Lingkaran

Perpanjang kalkulator untuk menangani area lingkaran menggunakan:

function calculateCircleArea(radius) {
 	return Math.PI * radius * radius;
}

Perhitungan perimeter

Tambahkan fungsionalitas untuk menghitung perimeter poligon:

function calculatePolygonPerimeter(vertices) {
 	let perimeter = 0;
 	const n = vertices.length;
 	 	for (let i = 0; i < n; i++) {
 	 	const j = (i + 1) % n;
 	 	const dx = vertices[j].x - vertices[i].x;
 	 	const dy = vertices[j].y - vertices[i].y;
 	 	perimeter += Math.sqrt(dx * dx + dy * dy);
 	}
 	 	return perimeter;
}

Menghemat dan memuat poligon

Menerapkan LocalStorage untuk menyimpan dan memuat konfigurasi poligon:

// Save polygon
function savePolygon(name) {
 	const polygonData = JSON.stringify(points);
 	localStorage.setItem(`polygon_${name}`, polygonData);
}
// Load polygon
function loadPolygon(name) {
 	const polygonData = localStorage.getItem(`polygon_${name}`);
 	if (polygonData) {
 	 	points = JSON.parse(polygonData);
 	 	updateCoordinateInputs();
 	 	redrawCanvas();
 	}
}

Aplikasi praktis

Real-world Applications of Geometry Calculators

Berbagai aplikasi dunia nyata di mana kalkulator area geometri memberikan solusi yang berharga

Kalkulator Area Geometri JavaScript kami memiliki banyak aplikasi praktis:

Pengembangan Web

  • Peta interaktif dan visualisasi plot
  • Aplikasi Survei Tanah
  • Alat Perencanaan Real Estat
  • Tata letak kamar dan aplikasi desain

Pendidikan

  • Mengajar prinsip geometris secara interaktif
  • Memvisualisasikan konsep matematika
  • Menciptakan sumber belajar interaktif

Pengembangan game

  • Deteksi Tabrakan untuk Objek Game
  • Desain level dan penciptaan lingkungan
  • Generasi Prosedural Dunia Game

Kesimpulan

Dalam tutorial komprehensif ini, kami telah membangun kalkulator area geometri interaktif yang kuat menggunakan JavaScript.Kalkulator kami dapat:

  1. Hitung secara akurat luas poligon menggunakan rumus shoelace
  2. Berikan antarmuka visual yang intuitif untuk membuat dan memodifikasi bentuk
  3. Dukung input koordinat manual untuk pengukuran yang tepat
  4. Konversi di antara berbagai unit pengukuran
  5. Tunjukkan langkah perhitungan terperinci untuk tujuan pendidikan

Prinsip dan teknik yang telah kami bahas - geometri koordinat, algoritma shoelace, manipulasi kanvas, dan desain antarmuka pengguna - adalah keterampilan berharga yang melampaui proyek khusus ini.Anda dapat menerapkannya pada berbagai tantangan pengembangan web, dari visualisasi data hingga aplikasi interaktif.

Dengan membangun kalkulator geometri ini, Anda tidak hanya membuat alat yang berguna tetapi juga memperdalam pemahaman Anda tentang konsep matematika dan implementasinya dalam JavaScript.Jangan ragu untuk memperluas kalkulator dengan fitur tambahan, mengoptimalkan kinerjanya, atau mengintegrasikannya ke dalam proyek Anda sendiri.

Happy Coding!

Sumber daya untuk pembelajaran lebih lanjut

  • MDN Web Docs: Canvas API
  • Khan Academy: Koordinat Geometri
  • Wikipedia: Formula Shoelace
  • Javascript untuk visualisasi matematika
Preparing Ad...