mirror of
https://github.com/storytold/point-generator.git
synced 2026-10-18 00:23:00 +00:00
added color struct
This commit is contained in:
Generated
+71
-1
@@ -24,6 +24,12 @@ version = "0.1.10"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg-if"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cmake"
|
name = "cmake"
|
||||||
version = "0.1.45"
|
version = "0.1.45"
|
||||||
@@ -39,6 +45,17 @@ version = "0.10.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8"
|
checksum = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "getrandom"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4060f4657be78b8e766215b02b18a2e862d83745545de804638e2b545e81aee6"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if 1.0.0",
|
||||||
|
"libc",
|
||||||
|
"wasi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.82"
|
version = "0.2.82"
|
||||||
@@ -51,7 +68,7 @@ version = "0.4.13"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fcf3805d4480bb5b86070dcfeb9e2cb2ebc148adb753c5cca5f884d1d65a42b2"
|
checksum = "fcf3805d4480bb5b86070dcfeb9e2cb2ebc148adb753c5cca5f884d1d65a42b2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if 0.1.10",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -76,15 +93,68 @@ name = "point-generator"
|
|||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
|
"rand",
|
||||||
"zmq",
|
"zmq",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ppv-lite86"
|
||||||
|
version = "0.2.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand"
|
||||||
|
version = "0.8.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "18519b42a40024d661e1714153e9ad0c3de27cd495760ceb09710920f1098b1e"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"rand_chacha",
|
||||||
|
"rand_core",
|
||||||
|
"rand_hc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_chacha"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d"
|
||||||
|
dependencies = [
|
||||||
|
"ppv-lite86",
|
||||||
|
"rand_core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_core"
|
||||||
|
version = "0.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c026d7df8b298d90ccbbc5190bd04d85e159eaf5576caeacf8741da93ccbd2e5"
|
||||||
|
dependencies = [
|
||||||
|
"getrandom",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_hc"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
|
||||||
|
dependencies = [
|
||||||
|
"rand_core",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml"
|
name = "toml"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "736b60249cb25337bc196faa43ee12c705e426f3d55c214d73a4e7be06f92cb4"
|
checksum = "736b60249cb25337bc196faa43ee12c705e426f3d55c214d73a4e7be06f92cb4"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasi"
|
||||||
|
version = "0.10.1+wasi-snapshot-preview1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "93c6c3420963c5c64bca373b25e77acb562081b9bb4dd5bb864187742186cea9"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zeromq-src"
|
name = "zeromq-src"
|
||||||
version = "0.1.10+4.3.2"
|
version = "0.1.10+4.3.2"
|
||||||
|
|||||||
@@ -14,5 +14,6 @@ path = "src/main.rs"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bytes = "1.0.1"
|
bytes = "1.0.1"
|
||||||
|
rand = "0.8.2"
|
||||||
zmq = { version = "0.9", features = ['vendored'] }
|
zmq = { version = "0.9", features = ['vendored'] }
|
||||||
#zeromq = "0.2.0" # Doesn't compile. Complains about Rust issue #54727
|
#zeromq = "0.2.0" # Doesn't compile. Complains about Rust issue #54727
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
#[derive(Copy, Clone, Debug)]
|
||||||
|
pub enum Color {
|
||||||
|
Black,
|
||||||
|
White,
|
||||||
|
Red,
|
||||||
|
Green,
|
||||||
|
Blue,
|
||||||
|
Custom { r: f32, g: f32, b: f32 },
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Color {
|
||||||
|
pub fn get_f32_r(&self) -> f32 {
|
||||||
|
match &self {
|
||||||
|
Color::Black => 0.0f32,
|
||||||
|
Color::White => 1.0f32,
|
||||||
|
Color::Red => 1.0f32,
|
||||||
|
Color::Green => 0.0f32,
|
||||||
|
Color::Blue => 0.0f32,
|
||||||
|
Color::Custom {r, g, b} => *r,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_f32_g(&self) -> f32 {
|
||||||
|
match &self {
|
||||||
|
Color::Black => 0.0f32,
|
||||||
|
Color::White => 1.0f32,
|
||||||
|
Color::Red => 0.0f32,
|
||||||
|
Color::Green => 1.0f32,
|
||||||
|
Color::Blue => 0.0f32,
|
||||||
|
Color::Custom {r, g, b} => *g,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_f32_b(&self) -> f32 {
|
||||||
|
match &self {
|
||||||
|
Color::Black => 0.0f32,
|
||||||
|
Color::White => 1.0f32,
|
||||||
|
Color::Red => 1.0f32,
|
||||||
|
Color::Green => 0.0f32,
|
||||||
|
Color::Blue => 0.0f32,
|
||||||
|
Color::Custom {r, g, b} => *b,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+8
-1
@@ -1,9 +1,13 @@
|
|||||||
|
//! Generate random points to send over ZeroMQ to a consumer
|
||||||
|
|
||||||
mod point;
|
mod point;
|
||||||
|
mod color;
|
||||||
|
|
||||||
use point::Point;
|
use point::Point;
|
||||||
use std::thread;
|
use std::thread;
|
||||||
use zmq::Error;
|
use zmq::Error;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
use crate::color::Color;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let ctx = zmq::Context::new();
|
let ctx = zmq::Context::new();
|
||||||
@@ -14,7 +18,10 @@ fn main() {
|
|||||||
//socket.send("hello world!", 0).unwrap();
|
//socket.send("hello world!", 0).unwrap();
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let point = Point::white_at(0.0f32, 0.0f32, 0.0f32);
|
let point = Point::at_random_range(-1000.0f32, 1000.0f32, Color::White);
|
||||||
|
|
||||||
|
println!("Location: {}", point.location_string());
|
||||||
|
|
||||||
let bytes = point.to_bytes();
|
let bytes = point.to_bytes();
|
||||||
|
|
||||||
//let result = socket.send("hello world!", 0);
|
//let result = socket.send("hello world!", 0);
|
||||||
|
|||||||
+33
-4
@@ -1,4 +1,8 @@
|
|||||||
use bytes::{BytesMut, BufMut};
|
use bytes::{BytesMut, BufMut};
|
||||||
|
use rand::distributions::Uniform;
|
||||||
|
use rand::Rng;
|
||||||
|
use crate::color::Color;
|
||||||
|
|
||||||
|
|
||||||
pub struct Point {
|
pub struct Point {
|
||||||
pub x: f32,
|
pub x: f32,
|
||||||
@@ -13,19 +17,40 @@ pub struct Point {
|
|||||||
|
|
||||||
impl Point {
|
impl Point {
|
||||||
|
|
||||||
pub fn white_at(x: f32, y: f32, z: f32) -> Self {
|
pub fn at(x: f32, y: f32, z: f32, color: Color) -> Self {
|
||||||
Point {
|
Point {
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
z,
|
z,
|
||||||
_unused: 0.0f32,
|
_unused: 0.0f32,
|
||||||
r: 1.0f32,
|
r: color.get_f32_r(),
|
||||||
g: 1.0f32,
|
g: color.get_f32_g(),
|
||||||
b: 1.0f32,
|
b: color.get_f32_b(),
|
||||||
a: 1.0f32,
|
a: 1.0f32,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn at_random_range(min: f32, max: f32, color: Color) -> Self {
|
||||||
|
let mut rng = rand::thread_rng();
|
||||||
|
let range = Uniform::new_inclusive(min, max);
|
||||||
|
|
||||||
|
let x = rng.sample(&range);
|
||||||
|
let y = rng.sample(&range);
|
||||||
|
let z = rng.sample(&range);
|
||||||
|
|
||||||
|
Point {
|
||||||
|
x,
|
||||||
|
y,
|
||||||
|
z,
|
||||||
|
_unused: 0.0f32,
|
||||||
|
r: color.get_f32_r(),
|
||||||
|
g: color.get_f32_g(),
|
||||||
|
b: color.get_f32_b(),
|
||||||
|
a: 1.0f32,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
pub fn to_bytes(&self) -> Vec<u8> {
|
pub fn to_bytes(&self) -> Vec<u8> {
|
||||||
let mut buf = BytesMut::with_capacity(32);
|
let mut buf = BytesMut::with_capacity(32);
|
||||||
buf.put_f32(self.x);
|
buf.put_f32(self.x);
|
||||||
@@ -38,4 +63,8 @@ impl Point {
|
|||||||
buf.put_f32(self.a);
|
buf.put_f32(self.a);
|
||||||
buf.to_vec()
|
buf.to_vec()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn location_string(&self) -> String {
|
||||||
|
format!("{}, {}, {}", self.x, self.y, self.z)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user