mirror of
https://github.com/Noratrieb/mandelbrot-rust.git
synced 2026-01-14 15:25:07 +01:00
initial commit
This commit is contained in:
commit
7577fc6041
9 changed files with 130 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
/target
|
||||
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/../../../../../../:\Users\nilsh\CLionProjects\mandelbrot_set\.idea/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
11
.idea/mandelbrot_set.iml
generated
Normal file
11
.idea/mandelbrot_set.iml
generated
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="CPP_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/mandelbrot_set.iml" filepath="$PROJECT_DIR$/.idea/mandelbrot_set.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
5
Cargo.lock
generated
Normal file
5
Cargo.lock
generated
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
[[package]]
|
||||
name = "mandelbrot_set"
|
||||
version = "0.1.0"
|
||||
9
Cargo.toml
Normal file
9
Cargo.toml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
[package]
|
||||
name = "mandelbrot_set"
|
||||
version = "0.1.0"
|
||||
authors = ["Nilstrieb <nils.heydecker@gmx.ch>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
79
src/lib.rs
Normal file
79
src/lib.rs
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
use std::error::Error;
|
||||
use std::time::SystemTime;
|
||||
|
||||
pub fn main(config: Config) -> Result<String, Box<dyn Error>> {
|
||||
let start_time = SystemTime::now().elapsed()?;
|
||||
|
||||
|
||||
let end_time = SystemTime::now().elapsed()?;
|
||||
println!("Time: {}", end_time.as_micros() - start_time.as_micros());
|
||||
Ok(String::from("hi"))
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
struct CNumber {
|
||||
real: f64,
|
||||
imag: f64,
|
||||
}
|
||||
|
||||
impl CNumber {
|
||||
fn new(real: f64, imag: f64) -> CNumber {
|
||||
CNumber { real, imag }
|
||||
}
|
||||
|
||||
fn add_mut(&mut self, other: CNumber) {
|
||||
self.real += other.real;
|
||||
self.imag += other.imag;
|
||||
}
|
||||
|
||||
fn mul_mut(&mut self, other: CNumber) {
|
||||
self.real = self.real * self.real - other.imag * other.imag;
|
||||
self.imag = self.real * other.imag + other.real * self.imag;
|
||||
}
|
||||
}
|
||||
|
||||
fn add_c(a: &CNumber, b: &CNumber) -> CNumber {
|
||||
let real = a.real + b.real;
|
||||
let imag = a.imag + b.imag;
|
||||
|
||||
CNumber { real, imag }
|
||||
}
|
||||
|
||||
fn mul_c(a: &CNumber, b: &CNumber) -> CNumber {
|
||||
let real = a.real * a.real - b.imag * b.imag;
|
||||
let imag = a.real * b.imag + b.real * a.imag;
|
||||
|
||||
CNumber { real, imag }
|
||||
}
|
||||
|
||||
pub struct Config {
|
||||
quality: i32,
|
||||
width: i32,
|
||||
threshold: f32,
|
||||
//-- calculated
|
||||
height: i32,
|
||||
center: CNumber,
|
||||
iterations: i32,
|
||||
}
|
||||
|
||||
impl Config {
|
||||
pub fn new(point_number: usize, quality: i32, width: i32, threshold: f32) -> Config{
|
||||
let height = width as f32 * 0.2;
|
||||
|
||||
let interesting_points = vec![CNumber::new(-0.75, 0.0), CNumber::new(-0.77568377, 0.13646737)];
|
||||
let center = interesting_points[point_number];
|
||||
let iterations = match quality {
|
||||
0 => 20,
|
||||
1 => 50,
|
||||
2 => 100,
|
||||
3 => 500,
|
||||
4 => 1000,
|
||||
_ => quality
|
||||
};
|
||||
|
||||
Config {
|
||||
quality, width, height: height as i32,
|
||||
center, iterations, threshold,
|
||||
}
|
||||
}
|
||||
}
|
||||
3
src/main.rs
Normal file
3
src/main.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println!("Hello, world!");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue