picrate 0.4.0-java → 0.4.1-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d0093cb47f7b3da255af047a82056efb9ea6d3c4173c13c8336b98c7f4b3cfb
4
- data.tar.gz: ea5b1e00ee24ca51bc0625ab261a6914b2c67624f5026a06a4c0283a31b07da0
3
+ metadata.gz: 25ae4432e0880eeea609a15cbd902db4141cc7ac295eb19e0683bcdd63455979
4
+ data.tar.gz: 69a516953444d646916d662469b66b4741b64ade197380889b29a0e0edabab95
5
5
  SHA512:
6
- metadata.gz: 50417839ec672bf61d8fc21f707612959ce3856dd7c85c4d6263308f00e09e209f9cfea4fa94a065232c41fa3a80f6bd715d2cf182a8f0d518e549a8f0ac4ec1
7
- data.tar.gz: c852f333c965a5ec7152d312939fbfce171048079838e2e69e46984daa740a19c64e9a789a912f097fd110807864141f8104b0239ad82fce81e5212163cdeae2
6
+ metadata.gz: c7c0f1e869a86480fd6fdbea6b344a39b8e0a9e2ace90ed86e7443078377a4eff7746a80123a994be71b0ebaa497225fce76adb44b8e2718c4c366624a4d8297
7
+ data.tar.gz: 1a0a367a70d033c4d0b5f79fb55d6c3a646fe804cb27ac6acf63fb513ac50986291b5d727d02fd4afc7495976b669b2d9abcccecc0b3c74d3ad7647e265712a8
data/Rakefile CHANGED
@@ -18,6 +18,7 @@ desc 'Create Manifest and Copy Jars'
18
18
  task :init do
19
19
  create_manifest
20
20
  processing_root = File.dirname(`readlink -f $(which processing)`)
21
+ # processing_root = '/home/tux/processing-3.4'
21
22
  jar_dir = File.join(processing_root, 'core', 'library')
22
23
  opengl = Dir.entries(jar_dir).grep(/amd64|armv6hf/).select { |jar| jar =~ /linux/ }
23
24
  opengl.concat %w[jogl-all.jar gluegen-rt.jar]
@@ -28,7 +29,7 @@ end
28
29
 
29
30
  desc 'Install'
30
31
  task :install do
31
- sh 'mv target/picrate-0.4.0.jar lib'
32
+ sh 'mv target/picrate-0.4.1.jar lib'
32
33
  end
33
34
 
34
35
  desc 'Gem'
@@ -13,7 +13,7 @@ There is something wrong with jgem install from rubygems (involving `flock` and
13
13
 
14
14
  ```bash
15
15
  jgem install arcball-1.0.1-java.gem
16
- jgem install picrate-0.1.0-java.gem
16
+ jgem install picrate-0.4.0-java.gem
17
17
  ```
18
18
 
19
19
  Install samples
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module PiCrate
3
- VERSION = '0.4.0'.freeze
3
+ VERSION = '0.4.1'.freeze
4
4
  end
@@ -59,7 +59,7 @@ class Boid
59
59
  end
60
60
 
61
61
  def angle
62
- Vec2D.new(vel.x, vel.y).heading
62
+ Vec2D.new(vel.x, vel.y).fast_heading
63
63
  end
64
64
 
65
65
  def goal(target, d = 50.0)
data/picrate.gemspec CHANGED
@@ -12,10 +12,10 @@ Gem::Specification.new do |gem|
12
12
  gem.description = <<-EOS
13
13
  A batteries included version of processing in ruby, for raspberrypi and linux.
14
14
  EOS
15
- gem.summary = %q{ruby wrapper for processing-3.3.7 on raspberrypi and linux64}
15
+ gem.summary = %q{ruby wrapper for processing-3.4 on raspberrypi and linux64}
16
16
  gem.homepage = 'https://ruby-processing.github.io/PiCrate/'
17
17
  gem.files = `git ls-files`.split($/)
18
- gem.files << 'lib/picrate-0.4.0.jar'
18
+ gem.files << 'lib/picrate-0.4.1.jar'
19
19
  gem.files << 'lib/gluegen-rt.jar'
20
20
  gem.files << 'lib/jogl-all.jar'
21
21
  gem.files << 'lib/gluegen-rt-natives-linux-amd64.jar'
data/pom.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  project 'picrate', 'http://maven.apache.org' do
2
2
 
3
3
  model_version '4.0.0'
4
- id 'ruby-processing:picrate:0.4.0'
4
+ id 'ruby-processing:picrate:0.4.1'
5
5
  packaging 'jar'
6
6
 
7
7
  description 'An integrated processing-core (somewhat hacked), with additional java code for a jruby version of processing.'
@@ -31,8 +31,8 @@ project 'picrate', 'http://maven.apache.org' do
31
31
  'project.build.sourceEncoding' => 'utf-8',
32
32
  'polyglot.dump.pom' => 'pom.xml',
33
33
  'maven.compiler.source' => '1.8' )
34
- pom 'org.jruby:jruby:9.1.16.0'
35
- jar 'org.processing:video:3.0.2'
34
+ pom 'org.jruby:jruby:9.2.0.0'
35
+ jar 'org.processing:video:3.2.3'
36
36
  jar 'org.jogamp.jogl:jogl-all:${jogl.version}'
37
37
  jar 'org.jogamp.gluegen:gluegen-rt-main:${jogl.version}'
38
38
  end
data/pom.xml CHANGED
@@ -11,7 +11,7 @@ DO NOT MODIFIY - GENERATED CODE
11
11
  <modelVersion>4.0.0</modelVersion>
12
12
  <groupId>ruby-processing</groupId>
13
13
  <artifactId>picrate</artifactId>
14
- <version>0.4.0</version>
14
+ <version>0.4.1</version>
15
15
  <name>picrate</name>
16
16
  <description>An integrated processing-core (somewhat hacked), with additional java code for a jruby version of processing.</description>
17
17
  <url>http://maven.apache.org</url>
@@ -78,13 +78,13 @@ DO NOT MODIFIY - GENERATED CODE
78
78
  <dependency>
79
79
  <groupId>org.jruby</groupId>
80
80
  <artifactId>jruby</artifactId>
81
- <version>9.1.16.0</version>
81
+ <version>9.2.0.0</version>
82
82
  <type>pom</type>
83
83
  </dependency>
84
84
  <dependency>
85
85
  <groupId>org.processing</groupId>
86
86
  <artifactId>video</artifactId>
87
- <version>3.0.2</version>
87
+ <version>3.2.3</version>
88
88
  </dependency>
89
89
  <dependency>
90
90
  <groupId>org.jogamp.jogl</groupId>
@@ -1,12 +1,12 @@
1
1
  package monkstone.vecmath.vec2;
2
2
 
3
3
  /*
4
- * Copyright (c) 2018 Martin Prout
4
+ * Copyright (c) 2015-18 Martin Prout
5
5
  *
6
6
  * This library is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU General Public
7
+ * modify it under the terms of the GNU Lesser General Public
8
8
  * License as published by the Free Software Foundation; either
9
- * version 3.0 of the License, or (at your option) any later version.
9
+ * version 2.1 of the License, or (at your option) any later version.
10
10
  *
11
11
  * http://creativecommons.org/licenses/LGPL/2.1/
12
12
  *
@@ -15,10 +15,12 @@ package monkstone.vecmath.vec2;
15
15
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
16
  * Lesser General Public License for more details.
17
17
  *
18
- * You should have received a copy of the GNU General Public
18
+ * You should have received a copy of the GNU Lesser General Public
19
19
  * License along with this library; if not, write to the Free Software
20
20
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- */
21
+ *
22
+ * fastAtan2 algorithm from https://github.com/libgdx/libgdx (Apache 2.0 license)
23
+ */
22
24
  import org.jruby.Ruby;
23
25
  import org.jruby.RubyArray;
24
26
  import org.jruby.RubyClass;
@@ -35,7 +37,7 @@ import monkstone.vecmath.JRender;
35
37
 
36
38
  /**
37
39
  *
38
- *
40
+ * @author Martin Prout
39
41
  */
40
42
  @JRubyClass(name = "Vec2D")
41
43
  public class Vec2 extends RubyObject {
@@ -55,18 +57,10 @@ public class Vec2 extends RubyObject {
55
57
  vec2Cls.defineAnnotatedMethods(Vec2.class);
56
58
  }
57
59
 
58
- /**
59
- *
60
- * @return
61
- */
62
60
  public double javax() {
63
61
  return jx;
64
62
  }
65
63
 
66
- /**
67
- *
68
- * @return
69
- */
70
64
  public double javay() {
71
65
  return jy;
72
66
  }
@@ -361,6 +355,16 @@ public class Vec2 extends RubyObject {
361
355
  return context.runtime.newFloat(Math.atan2(jy, jx));
362
356
  }
363
357
 
358
+ /**
359
+ *
360
+ * @param context ThreadContext
361
+ * @return heading IRubyObject radians
362
+ */
363
+ @JRubyMethod(name = "fast_heading")
364
+ public IRubyObject fastHeading(ThreadContext context) {
365
+ return context.runtime.newFloat(fastAtan2(jy, jx));
366
+ }
367
+
364
368
  /**
365
369
  *
366
370
  * @param context ThreadContext
@@ -448,7 +452,7 @@ public class Vec2 extends RubyObject {
448
452
  /**
449
453
  *
450
454
  * @param context ThreadContext
451
- * @return new normalized Vec3D object (ruby)
455
+ * @return new normalized Vec2D object (ruby)
452
456
  */
453
457
  @JRubyMethod(name = "normalize")
454
458
 
@@ -589,7 +593,7 @@ public class Vec2 extends RubyObject {
589
593
  /**
590
594
  *
591
595
  * @param context ThreadContext
592
- * @param other IRubyObject another Vec3D
596
+ * @param other IRubyObject another Vec2D
593
597
  * @return angle IRubyObject in radians
594
598
  */
595
599
  @JRubyMethod(name = "angle_between")
@@ -605,6 +609,25 @@ public class Vec2 extends RubyObject {
605
609
  return runtime.newFloat(Math.atan2(jx - vec.jx, jy - vec.jy));
606
610
  }
607
611
 
612
+ /**
613
+ *
614
+ * @param context ThreadContext
615
+ * @param other IRubyObject another Vec2D
616
+ * @return angle IRubyObject in radians
617
+ */
618
+ @JRubyMethod(name = "fast_angle_between")
619
+
620
+ public IRubyObject fastAngleBetween(ThreadContext context, IRubyObject other) {
621
+ Vec2 vec = null;
622
+ Ruby runtime = context.runtime;
623
+ if (other instanceof Vec2) {
624
+ vec = (Vec2) other.toJava(Vec2.class);
625
+ } else {
626
+ throw runtime.newTypeError("argument should be Vec2D");
627
+ }
628
+ return runtime.newFloat(fastAtan2(jx - vec.jx, jy - vec.jy));
629
+ }
630
+
608
631
  /**
609
632
  *
610
633
  * @param context ThreadContext
@@ -673,6 +696,28 @@ public class Vec2 extends RubyObject {
673
696
  return context.runtime.newString(String.format("Vec2D(x = %4.4f, y = %4.4f)", jx, jy));
674
697
  }
675
698
 
699
+ private double fastAtan2(double y, double x) {
700
+ if (x == 0) {
701
+ if (y > 0) {
702
+ return Math.PI / 2;
703
+ }
704
+ if (y == 0) {
705
+ return 0;
706
+ }
707
+ return -Math.PI / 2;
708
+ }
709
+ final double atan, z = y / x;
710
+ if (Math.abs(z) < 1) {
711
+ atan = z / (1 + 0.28 * z * z);
712
+ if (x < 0) {
713
+ return atan + (y < 0 ? -Math.PI : Math.PI);
714
+ }
715
+ return atan;
716
+ }
717
+ atan = Math.PI / 2 - z / (z * z + 0.28);
718
+ return y < 0 ? atan - Math.PI : atan;
719
+ }
720
+
676
721
  /**
677
722
  *
678
723
  * @return hash int
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: picrate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: java
6
6
  authors:
7
7
  - monkstone
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-01 00:00:00.000000000 Z
11
+ date: 2018-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -168,7 +168,7 @@ files:
168
168
  - lib/jogl-all-natives-linux-amd64.jar
169
169
  - lib/jogl-all-natives-linux-armv6hf.jar
170
170
  - lib/jogl-all.jar
171
- - lib/picrate-0.4.0.jar
171
+ - lib/picrate-0.4.1.jar
172
172
  - lib/picrate.rb
173
173
  - lib/picrate/app.rb
174
174
  - lib/picrate/creators/sketch_class.rb
@@ -343,7 +343,7 @@ rubyforge_project:
343
343
  rubygems_version: 2.7.7
344
344
  signing_key:
345
345
  specification_version: 4
346
- summary: ruby wrapper for processing-3.3.7 on raspberrypi and linux64
346
+ summary: ruby wrapper for processing-3.4 on raspberrypi and linux64
347
347
  test_files:
348
348
  - test/color_group_test.rb
349
349
  - test/create_test.rb