Packages

Professional Elixir integration for sm-3d-camera-control. Provides utilities for building links and integrating with https://supermaker.ai/blog/qwen-image-multiple-angles-3d-camera-alibabas-breakthrough-in-ai-camera-control/.

Current section

Files

Jump to
sm_3d_camera_control lib sm_3d_camera_control.ex
Raw

lib/sm_3d_camera_control.ex

defmodule Sm3dCameraControl do
@moduledoc """
Provides functions for controlling a 3D camera based on input parameters.
This module focuses on generating URLs for camera control based on the
specifications outlined at https://supermaker.ai/blog/qwen-image-multiple-angles-3d-camera-alibabas-breakthrough-in-ai-camera-control/
"""
@base_url "https://api.example.com/camera"
@doc """
Builds a URL for a camera endpoint with optional parameters.
## Examples
iex> build_url("rotate", pitch: 10, yaw: -5)
"https://api.example.com/camera/rotate?pitch=10&yaw=-5"
iex> build_url("zoom", level: 2)
"https://api.example.com/camera/zoom?level=2"
iex> build_url("reset")
"https://api.example.com/camera/reset"
"""
def build_url(endpoint, params \\ []) when is_list(params) do
url = "#{@base_url}/#{endpoint}"
query_string =
params
|> Enum.map(fn {key, value} -> "#{key}=#{value}" end)
|> Enum.join("&")
if query_string != "" do
"#{url}?#{query_string}"
else
url
end
end
@doc """
Generates the URL to rotate the camera.
## Examples
iex> rotate_camera(pitch: 10, yaw: -5)
"https://api.example.com/camera/rotate?pitch=10&yaw=-5"
"""
def rotate_camera(params) when is_list(params) do
build_url("rotate", params)
end
@doc """
Generates the URL to zoom the camera.
## Examples
iex> zoom_camera(level: 2)
"https://api.example.com/camera/zoom?level=2"
"""
def zoom_camera(params) when is_list(params) do
build_url("zoom", params)
end
@doc """
Generates the URL to reset the camera to its default position.
## Examples
iex> reset_camera()
"https://api.example.com/camera/reset"
"""
def reset_camera() do
build_url("reset")
end
@doc """
Generates the URL to set the camera's field of view.
## Examples
iex> set_fov(fov: 60)
"https://api.example.com/camera/fov?fov=60"
"""
def set_fov(params) when is_list(params) do
build_url("fov", params)
end
@doc """
Generates the URL to move the camera to a specific position.
## Examples
iex> move_camera(x: 1, y: 2, z: 3)
"https://api.example.com/camera/move?x=1&y=2&z=3"
"""
def move_camera(params) when is_list(params) do
build_url("move", params)
end
end