generate_complex_bevel {raybevel}R Documentation

Generate Complex 2D Bevel Profile for 3D Polygons

Description

All arguments are recycled to the length of the longest argument, allowing for the generation of complex and repetitive bevel patterns without manual replication of argument values.

Usage

generate_complex_bevel(
  bevel_type,
  bevel_start = 0,
  bevel_end = 1,
  segment_height = 1,
  angle = 45,
  curve_points = 30,
  reverse = FALSE,
  flip = FALSE,
  manual_offsets = NULL,
  add_end_points = TRUE,
  plot_bevel = FALSE,
  overall_height = NA,
  set_minimum_zero = TRUE,
  zero_offset_epsilon = 1e-06
)

Arguments

bevel_type

Vector of bevel types. Options are: '"circular"', '"exp"', '"bump"', '"step"', '"block"', '"angled"'. Note that for the '"step"' type, the transition occurs at 'bevel_start'.

bevel_start

Numeric vector of values between '0' and '1'. Percentage distance in the interior the polygon at which to begin the corresponding 'bevel_type'. Note that for the '"step"' type, this is ignored.

bevel_end

Numeric vector of values between '0' and '1'. Percentage distance in the interior the polygon at which to end the corresponding 'bevel_type'.

segment_height

Numeric vector. The maximum heights of each bevel, as measured from the initial height at the end of the previous bevel.

angle

Default 'NULL'. Numeric vector. Optional angle parameter in degrees for angular bevels (overrides values in 'max_height').

curve_points

Default '50'. Integer vector of number of points for each curve.

reverse

Default 'FALSE'. Whether to reverse each bevel.

flip

Default 'FALSE'. Whether to reverse each bevel horizontally.

manual_offsets

Default 'NULL', none. This will force the bevel to add a point (interpolating between the two nearest points) at the specified offsets. This is useful when you want to add points at specific distances along the curve.

add_end_points

Default 'TRUE'. Whether to ensure there is a point at zero and a point at one.

plot_bevel

Default 'FALSE'. Whether to plot the resulting bevel.

overall_height

Default 'NA'. Numeric value specifying the overall height of the curve.

set_minimum_zero

Default ‘TRUE'. Whether to offset the lowest point of the bevel so it’s at zero.

zero_offset_epsilon

Default '1e-5'. Amount to offset the bevel to ensure no self-intersection with the base.

Value

List containing 'x' and 'y', which are the coordinates of the complex 2D bevel profile

Examples

# Generate a complex bevel profile and plot it
complex_coords = generate_complex_bevel(
  bevel_type  = c("circular", "bump", "step", "block", "angled"),
  bevel_start = c(0,   0.2, 0.6, 0.7, 0.9),
  bevel_end   = c(0.2, 0.5, 0.7, 0.8, 1.0),
  segment_height  = c(0.1, 0.2, 0.2, 0.2, 0.4),
  angle = 45,
  curve_points = c(50, 50, 50, 1, 1),
  reverse = c(FALSE, TRUE, FALSE, FALSE, FALSE),
  plot_bevel = TRUE
)
# Create a step function with reverses to generate a square wave pattern
complex_coords = generate_complex_bevel(
  bevel_type  = "step",
  bevel_start = head(seq(0,1,by=0.05),-1),
  bevel_end   = 1,
  segment_height  = 0.1,
  angle = 45,
  reverse = c(FALSE, TRUE),
  plot_bevel = TRUE
)
#Generate an increasing sawtooth pattern with angles
complex_coords = generate_complex_bevel(
  bevel_type  = "angled",
  bevel_start = head(seq(0,1,by=0.05),-1),
  bevel_end   = tail(seq(0,1,by=0.05),-1),
  segment_height  = 0.1,
  angle = c(45,30),
  reverse = c(FALSE, TRUE),
  plot_bevel = TRUE
)
# Create a step function to turn polygons into a ziggurat (note bevel_end is ignored)
complex_coords = generate_complex_bevel(
  bevel_type  = "step",
  bevel_start = head(seq(0,1,by=0.05),-1),
  bevel_end   = 1,
  segment_height  = 0.1,
  reverse = FALSE,
  plot_bevel = TRUE
)

[Package raybevel version 0.1.3 Index]