Quadrilateral de sine | R-BLOGGERS

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

Un patrulateral este un poligon care are patru laturi, patru unghiuri și patru vârfuri. Un poligon înseamnă că cifra este o formă închisă, ceea ce înseamnă că ultimul segment de linie se conectează înapoi la primul, închizând eficient o zonă.

De obicei, ne gândim la cvadrilaterale ca pătrate, dreptunghiuri, paralelograme, trapezoide, rombusuri sau zmei. (Am fost impresionat că nepoata mea de patru ani a cunoscut-o pe ultima, deși a numit-o diamant!)

Cu toate acestea, un poligon se poate intersecta. O stea cu cinci fețe este un exemplu, în care părțile laterale sunt conectate la vârfuri alternative.

De asemenea, un carilateral se poate intersecta. În diagrama următoare, cvadrilateralul inițial are punctele A (0,0), B (4,0), C (3,3), D (1,4). Quadrilateralul de sine este format din patrulateralul original prin schimbarea punctului D de la (1,4) la (2, -2), astfel încât lateral CD traversează AB).

Acest patrulateral de sine stătător este încă pe patru fețe și închis, deci nu este mai puțin un patrulateral decât originalul.

Iată câteva cod R:

# Self-intersecting quadrilateral
library(ggplot2)

# Define coordinates for original quadrilateral
original_quad <- data.frame(
  x1 = c(0, 4, 3, 1),
  y1 = c(0, 0, 3, 4),
  x2 = c(4, 3, 1, 0),
  y2 = c(0, 3, 4, 0),
  group = c("AB", "BC", "CD", "DA"),
  labels = c("A", "B", "C", "D")
)

# Define coordinates for self-intersecting quadrilateral
# Shift point D from (1,4) to (2, -2), so side CD crosses AB)

stretched_quad <- data.frame(
  x1 = c(0, 4, 3, 2),  
  y1 = c(0, 0, 3, -2), 
  x2 = c(4, 3, 2, 0),
  y2 = c(0, 3, -2, 0),
  group = c("AB", "BC", "CD", "DA"),
  labels = c("A", "B", "C", "D")
)

# Define colors for each side
color_map <- c("AB" = "red", "BC" = "blue", "CD" = "green", "DA" = "purple")

# Function to plot the quadrilateral
plot_quad <- function(data, title, x_lim, y_lim) {
  ggplot(data) +
    geom_segment(aes(x = x1, y = y1, xend = x2, yend = y2, color = group), size = 1.5) +  # Draw each side
    geom_point(aes(x = x1, y = y1), size = 3, color = "black") +  # Show points
    geom_text(aes(x = x1, y = y1, label = labels), vjust = -1, hjust = -0.5, size = 6, fontface = "bold") +  # Label A, B, C, D
    scale_color_manual(values = color_map) +
    coord_fixed() +
    xlim(x_lim(1), x_lim(2)) +
    ylim(y_lim(1), y_lim(2)) +
    theme_minimal() +
    ggtitle(title)
}

# Expanded limits for full visibility
x_range <- c(-1, 7)  
y_range <- c(-3, 7)  

# Plot the original quadrilateral
p1 <- plot_quad(original_quad, "Original Quadrilateral", x_range, y_range)

# Plot the self-intersecting quadrilateral
p2 <- plot_quad(stretched_quad, "Self-Intersecting Quadrilateral", x_range, y_range)

# Display both plots
library(gridExtra)
grid.arrange(p1, p2, ncol = 2)

Sfârşit

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.